Как аннотировать совокупный счетчик для набора запросов django? - PullRequest
0 голосов
/ 14 июля 2020

У меня есть следующий запрос, по которому я получаю количество выполненных задач по неделям. Я хочу добавить также совокупное количество выполненных задач.

        tasks = (Task.objects
            .annotate(year=ExtractYear('due_on'))
            .annotate(month=ExtractMonth('due_on'))
            .annotate(week=ExtractWeek('due_on'))
            .values('week', 'month', 'year')
            .annotate(
                due=Count('due_on')
            ).order_by('due_on')
        )

Я пробовал это, аннотируя такой необработанный запрос, но это не работает.

        tasks = (Task.objects.filter(
            content_type__model='incometaxreturn'
            )
            .annotate(year=ExtractYear('due_on'))
            .annotate(month=ExtractMonth('due_on'))
            .annotate(week=ExtractWeek('due_on'))
            .values('week', 'month', 'year')
            .annotate(
                due=Count('due_on'),
                cum_due=RawSQL("select Count(due_on) from tasks_task where extract('week', due_on) > %s", (today().isocalendar()[1],))

            ).order_by('due_on')
        )

Есть какие-нибудь советы, как лучше всего этого добиться?

...