子查询字段总和django

时间:2018-06-29 10:04:13

标签: django orm django-aggregation django-subquery

我有以下子查询:

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

然后,我需要用每个子查询返回的cost值的总和来注释我的QuerySet。怎么做?在Sum中包装子查询只会返回每个子查询的第一个元素。

1 个答案:

答案 0 :(得分:0)

我找到了一种没有Subquery的方法:

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

这不是一种优雅的方法,但是可以。