Как связать две таблицы в Джанго?

В Django связывание двух таблиц осуществляется с помощью отношений моделей. Django предлагает несколько типов отношений, включая OneToOne, ForeignKey и ManyToMany.

OneToOne связь устанавливает связь между двумя моделями таким образом, что каждый экземпляр одной модели связан с одним экземпляром другой модели. Для установки OneToOne связи между таблицами, вам необходимо добавить поле OneToOneField в определение модели. Например:

from django.db import models

class ModelA(models.Model):
    ...

class ModelB(models.Model):
    linked_model = models.OneToOneField(ModelA, on_delete=models.CASCADE)
    ...

ForeignKey связь устанавливает связь между двумя моделями таким образом, что каждый экземпляр одной модели может быть связан с несколькими экземплярами другой модели. Для установки ForeignKey связи между таблицами, вам необходимо добавить поле ForeignKey в определение модели. Например:

from django.db import models

class ModelA(models.Model):
    ...

class ModelB(models.Model):
    linked_model = models.ForeignKey(ModelA, on_delete=models.CASCADE)
    ...

ManyToMany связь устанавливает связь между двумя моделями таким образом, что каждый экземпляр одной модели может быть связан с несколькими экземплярами другой модели, и наоборот. Для установки ManyToMany связи между таблицами, вам необходимо добавить поле ManyToManyField в определение модели. Например:

from django.db import models

class ModelA(models.Model):
    ...

class ModelB(models.Model):
    linked_models = models.ManyToManyField(ModelA)
    ...

После объявления отношений между моделями, Django автоматически создаст соответствующие поля в таблицах базы данных для хранения связи между ними. Вы также можете указать различные параметры, такие как on_delete, blank, null и related_name, для настройки поведения связи.

Это лишь базовый обзор о том, как связать две таблицы в Django. В реальных проектах с множеством таблиц и сложными связями, вы можете использовать более сложные конструкции, такие как связи ManyToMany с дополнительными полями через промежуточную модель или связи через несколько уровней с ForeignKeys.

Для более детальной информации об отношениях моделей в Django, рекомендуется обратиться к документации Django: https://docs.djangoproject.com/en/3.2/topics/db/models/#relationships