Sobes.tech
Back to questions
Junior — Middle
47

Что подразумевается под полем related_query_name в Django и как оно используется при моделировании связей?

Companies where asked
Оптимакрос
Диджитал сектор

Answer from AI

sobes.tech AI

В Django поле related_query_name используется в определении связей моделей (ForeignKey, ManyToManyField, OneToOneField) и задаёт имя для обратного доступа к связанным объектам при построении запросов.

По умолчанию Django генерирует имя обратной связи автоматически, но иногда нужно задать более удобное или уникальное имя, особенно если в модели несколько связей на одну и ту же модель.

Пример:

class Author(models.Model):
    name = models.CharField(max_length=100)

class Book(models.Model):
    author = models.ForeignKey(Author, on_delete=models.CASCADE, related_query_name='book')

Теперь можно делать запросы типа:

Author.objects.filter(book__title__icontains='Python')

Здесь book — это related_query_name, позволяющее обращаться к книгам автора в фильтрах.

Таким образом, related_query_name помогает удобно и явно называть обратные связи для использования в ORM-запросах.