РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗pydjPmMRFK 146 of 187 menu

Связь многие к одному в Django

Давайте теперь изучим связь многие к одному. Такая связь образуется, когда много записей одной таблицы ссылаются на одну запись другой таблицы.

Давайте посмотрим на примере. Пусть у нас есть следующая таблица с категориями:

categories

  • id
  • name

Пусть также у нас есть следующая таблица с постами:

posts

  • id
  • title
  • category_id

Много постов могут принадлежать одной категории. Поле category_id в таблице постов хранит id категории. Так получается связь многие к одному: много постов - одна категория.

В Django такую связь задают полем ForeignKey. Его ставят на стороне многие - то есть в модели поста.

Давайте создадим модель категории:

from django.db import models class Category(models.Model): name = models.CharField(max_length=100)

Создадим модель поста и добавим в нее ForeignKey на категорию. Параметр on_delete=models.CASCADE означает: если категорию удалили - удалить и ее посты:

class Post(models.Model): title = models.CharField(max_length=200) category = models.ForeignKey( Category, on_delete=models.CASCADE )

Полный код обеих моделей будет таким:

from django.db import models class Category(models.Model): name = models.CharField(max_length=100) class Post(models.Model): title = models.CharField(max_length=200) category = models.ForeignKey( Category, on_delete=models.CASCADE )

В базе Django создаст колонку category_id. В коде же мы обращаемся к полю category и получаем объект категории, а не просто число.

Сделайте следующие таблицы:

countries

  • id
  • name

cities

  • id
  • name
  • country_id

Свяжите эти таблицы через ForeignKey: город ссылается на страну.

Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить