Связи моделей

ForeignObject

class django.db.models.ForeignObject(**kwargs)

Базовый класс для свзяей таблиц

  • to - ссылка на модель таблицы

  • on_delete=CASCADE - что делатьс записью, при удалении первичной записи

    • CASCADE - удалить записи вторичной таблицы
    • PROTECT - не удалять и вызывать исключение
    • SET_NULL - записать значение NULL
    • SET_DEFAULT - записать дефолтное значение для поля

ForeignKey

class django.db.models.ForeignKey(**kwargs)

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

Наследник ForeignObject

class Category(models.Model):

    name = models.CharField(...)

class Good(models.Model):

    category = models.ForeignKey(
        Category,
        on_delete=models.SET_NULL,
        related_name='goods',
    )

ManyToManyField

class django.db.models.ManyToManyField

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

users_like = models.ManyToManyField(
    settings.AUTH_USER_MODEL,
    related_name='images_liked',
    blank=True)

OneToOneField

class django.db.models.OneToOneField(**kwargs)

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

Наследник ForeignKey

class Category(models.Model):

    name = models.CharField(...)

class Good(models.Model):

    category = models.OneToOneField(
        Category,
    )