Django, как получить аннотированное поле связанной модели
Например, модель Invoice
имеет поле проекта, которое указывает ForeignKey
на модель Project
, Project
имеет пользовательский ProjectManager
, который get_queryset
определен, в get_queryset
я делаю:
super().annotate(display=...)
и когда я хочу получить это аннотированное поле через Invoice
:
Invoice.objects.filter(project__display__iregex=...)
то возникает ошибка, что в проекте нет отображаемого поля, как я могу сделать так, чтобы связанные модели брали поля из некоторого набора запросов, это get_queryset()
для нас
- Django 4.2.4
- Python 3.10
Для получения аннотированных полей я использую подзапрос:
Subquery(models.Project.objects.filter(id=OuterRef("project_id")).values_list("display"))
но из-за этого запрос выполняется очень медленно.