Создание связи "многие ко многим"

Мы собираемся добавить в модель Image еще одно поле для хранения пользователей которым понравилось изображение. В этом случае нам понадобится связь "многие ко многим", поскольку пользователю может понравиться несколько изображений, и каждое изображение может нравиться несколькими пользователями.

Добавьте в модель Image следующее поле:

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

При определении ManyToManyField, Джанго создает промежуточную таблицу соединения с использованием primary keys обеих моделей. ManyToManyField может быть определена в любой из двух связанных моделей.

Как и в случае с полями ForeignKey, атрибут related_name of ManyToManyField позволяет нам присваивать имя отношениям от связанного объекта. Поля ManyToManyField предоставляют связь «многие ко многим», который позволяет нам извлекать связанные объекты, такие как image.users_like.all() или из объекта пользователя, например user.images_liked.all().

Откройте командную строку и выполните следующую команду, чтобы создать начальную миграцию:

python manage.py makemigrations images

На выходе вы должны увидеть следующее:

Migrations for 'images':
    0001_initial.py:
        - Create model Image

Теперь выполните эту команду для применения миграции:

python manage.py migrate images

На выходе вы должны увидеть следующее:

Applying images.0001_initial... OK

Теперь модель изображения синхронизирована с базой данных.

results matching ""

    No results matching ""