Related Name - история и значения исторических имен
В Django моделях, когда вы создаете связь между двумя моделями, вы можете задать `related_name` параметр, чтобы определить имя обратной связи из связанной модели обратно к исходной модели.
Предположим, у вас есть модель `Author` и модель `Book`, и каждая книга может иметь только одного автора, но автор может быть связан с несколькими книгами (один-ко-многим отношением):
python
class Author(models.Model):
name = models.CharField(max_length=100)
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.ForeignKey(Author, on_delete=models.CASCADE, related_name='books')
В данном случае, мы определяем поле `author` в модели `Book`, которое является внешним ключом к модели `Author`. Здесь мы указываем `related_name='books'`, что означает, что у каждого автора будет доступ к набору связанных книг через атрибут`books`.
Теперь, используя `related_name`, мы можем получить доступ к связанным объектам из обратной стороны. Например, мы можем получить список всех книг для определенного автора:
python
author = Author.objects.get(id=1)
books = author.books.all()
Здесь мы получаем объект автора с `id=1`, а затем получаем все книги этого автора, используя атрибут `books`.
Таким образом, использование `related_name` позволяет нам легко получать доступ к связанным объектам из обратной стороны и упрощает работу с моделями и их связями.