Аннотация внутри аннотации в подзапросе 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 для более удобного просмотра.

Возможен ли вообще переход на аннотацию метода модели???? Я близко?

Вернуться на верх