Back to questions
Junior — Middle
59
Что обозначает параметр related_name в модели Django и как он влияет на связи между моделями?
Companies where asked
Оптимакрос
Диджитал сектор
Answer from AI
sobes.tech AI
Параметр related_name в Django используется в полях моделей, которые создают связи между моделями (например, ForeignKey, ManyToManyField, OneToOneField). Он задаёт имя обратной связи — то есть имя атрибута, через который можно получить доступ к связанным объектам с противоположной стороны связи.
Без указания related_name Django автоматически создаёт имя обратной связи, обычно это имя модели в нижнем регистре с суффиксом _set.
Пример:
class Author(models.Model):
name = models.CharField(max_length=100)
class Book(models.Model):
author = models.ForeignKey(Author, on_delete=models.CASCADE, related_name='books')
title = models.CharField(max_length=200)
Теперь, имея объект author, можно получить все книги этого автора через author.books.all(). Если бы related_name не был указан, нужно было бы использовать author.book_set.all().
Таким образом, related_name улучшает читаемость и удобство работы с обратными связями между моделями.