Для отображения связи foreign key в обоих моделях в Django, вы можете использовать поле ForeignKey
в каждой модели, чтобы установить связь между ними.
Предположим, у нас есть две модели: Author
и Book
. Каждый автор может иметь несколько книг, поэтому у нас будет связь foreign key от модели Book
к модели Author
, а также обратная связь от модели Author
к модели Book
.
Вот пример кода:
from django.db import models class Author(models.Model): name = models.CharField(max_length=100) # Добавляем связь foreign key от модели Book к модели Author # related_name позволяет обращаться к книгам автора через поле автора в модели Book # on_delete=models.CASCADE указывает на то, что если автор удален, все его книги также будут удалены # Если вы хотите, чтобы книги оставались в базе данных, даже после удаления автора, вы можете использовать значение on_delete=models.PROTECT # Если вы не хотите указывать значение on_delete, то по умолчанию будет использоваться значение on_delete=models.CASCADE # связь ForeignKey также может быть указана с дополнительными параметрами, такими как related_name, on_delete и другими # чтобы узнать больше о параметрах ForeignKey, вы можете ознакомиться с официальной документацией Django # https://docs.djangoproject.com/en/3.2/ref/models/fields/#foreignkey # в данном примере, значения по умолчанию для related_name и on_delete используются # вы можете настроить эти значения в соответствии с вашими потребностями # например, related_name='books' будет позволять обращаться к книгам автора через поле books в модели Author # и on_delete=models.PROTECT означает, что книги автора будут сохраняться в базе данных, даже после удаления автора book = models.ForeignKey('Book', related_name='author', on_delete=models.CASCADE) class Book(models.Model): title = models.CharField(max_length=100) # Добавляем обратную связь от модели Author к модели Book # related_name задает имя, которое будет использоваться, чтобы обратиться к автору через поле книги в модели Author # on_delete=models.CASCADE указывает на то, что если книга удалена, она будет удалена из базы данных, # но это поведение можно изменить, используя другие значения, такие как on_delete=models.PROTECT, # чтобы книга осталась в базе данных даже после удаления автора author = models.ForeignKey(Author, related_name='books', on_delete=models.CASCADE)
С помощью такой конфигурации, вы сможете получить доступ к автору книги через поле author
в модели Book
, и к книгам автора через поле books
в модели Author
.
author = Author.objects.get(id=1) books_by_author = author.books.all() book = Book.objects.get(id=1) author_of_book = book.author
Конечно, вы можете настроить связи ForeignKey
по-разному, используя различные параметры и аргументы, в зависимости от своих специфических требований. Это лишь пример того, как можно настроить связи foreign key в обоих моделях.