DJANGO СВЯЗЬ ОДИН КО МНОГИМ

В связи "один ко многим" объект одной модели связан с несколькими объектами другой модели через внешний ключ. Django позволяет создавать такие связи при помощи поля ForeignKey для модели, имеющей связь «многие» и методов, доступных через связанные менеджеры QuerySet.

Рассмотрим пример связи модели "Автор" с моделью "Статья". У каждой статьи может быть только один автор, но автор может написать несколько статей. В модели "Статья" нужно добавить поле с внешним ключом на модель "Автор".

class Author(models.Model):
name = models.CharField(max_length=50)
email = models.EmailField(max_length=255)

class Article(models.Model):
title = models.CharField(max_length=255)
content = models.TextField()
author = models.ForeignKey(Author, on_delete=models.CASCADE)

Поле ForeignKey принимает первым аргументом класс модели, на которую устанавливается связь. Параметр on_delete=models.CASCADE задает поведение при удалении объекта связанной модели из БД - CASCADE означает удаление всех связанных объектов.

При создании объекта статьи мы можем указать автора:

author = Author.objects.create(name='Ivan', email='[email protected]')
article = Article.objects.create(title='Django model relationships', content='Example how use ForeignKey', author=author)

Для получения всех статей автора можно использовать отношение related_name:

Article.objects.filter(author__name='Ivan')
# или
author = Author.objects.get(name='Ivan')
author.article_set.all()

Уроки по SQL - Создание таблиц, добавление и выборка данных - Связь один ко многим

57 Типы связей. Один к одному. Один ко многим. Многие ко многим. Курс по Django

56 Связи между таблицами. Нормализация БД. Курс по Django

59 Связь \

User Profile With One To One Relationship - Django (3.0) Crash Course Tutorials (pt 16)

5. Уроки Django 2 - Создание модели Tag, отношения ManyToMany, includes (2018)

#9. Создание связей между моделями через класс ForeignKey - Django уроки

61 Создание записей в коде с полями ForeignKey и Manytomany

62 Связь \

BLGPG-5B382AFF5264-24-11-23-22

Новые материалы: