Сумма полей подзапроса django - PullRequest
0 голосов
/ 29 июня 2018

У меня есть следующий подзапрос:

Subquery(
         ContestTaskRelationship.objects.filter(
             contest=contest,
             solved=OuterRef('id')
         ).values('cost').all()
)

Мне нужно аннотировать мой QuerySet суммой значений cost, возвращаемых каждым подзапросом. Как это сделать? Перенос подзапроса в Sum возвращает только первый элемент каждого подзапроса.

1 Ответ

0 голосов
/ 23 октября 2018

Я нашел путь без Subquery:

cost_sum=Sum(
            Case(
                When(
                    contest_task_relationship__contest=contest,
                    then='contest_task_relationship__cost'
                ),
                default=V(0),
                output_field=IntegerField()
            )
        )

Не элегантный способ, но он работает.

...