Аннотация внутри аннотации в подзапросе Django?
У меня есть несколько моделей и я пытаюсь ускорить страницу, где я перечисляю пользователей.
Проблема в том, что я использовал методы модели для отображения некоторых данных - но когда я выводил список пользователей, он обращался к БД несколько раз за User
, что в итоге приводило к сотням дополнительных запросов (тысячам, когда в списке были тысячи User
объектов), что серьезно снижало производительность.
С тех пор я начал использовать annotate
и prefetch_related
, что значительно сократило количество запросов. У меня есть только один бит, который я не могу понять, как аннотировать.
У меня есть метод модели (на Summation
модели), который я использую для получения сводки Evaluation
данных для пользователя следующим образом:
def evaluations_summary(self):
evaluations_summary = (
self.evaluation_set.all()
.values("evaluation_type__name")
.annotate(Count("evaluation_type"))
)
return evaluations_summary
Я пытаюсь понять, как аннотировать этот конкретный запрос на User
объекте.
Итак, отношения выглядят следующим образом User
имеет несколько Summation
, но только один из них всегда "активен", который мы и отображаем в списке User
. Каждый Summation
имеет несколько Evaluations
- краткое содержание которых мы также пытаемся показать.
Здесь приведены соответствующие части кода (включая метод модели Summation
, который дает пример того, что в настоящее время "работает" для отображения данных по мере необходимости) - я также сделал пример pastebin для более удобного просмотра.
Возможен ли вообще переход на аннотацию метода модели???? Я близко?