Django总和查询集

时间:2019-01-14 10:55:31

标签: django django-orm django-annotate

我在django中有一个查询集,条件如下:

query_set = MyModel.objects.annotate(TWWByRuns=(
    Case(
        When(Q(toss_winner=F('winner')) & Q(win_by_runs=0), then=1),
        output_field=FloatField(), default=0)
    )
).values('TWWByRuns')

我想使用django内置的sum函数在query_set中的值等于then=1时等于1。我知道不用条件就可以使用sum函数,但是在这里,因为我有条件,所以我应该在此query_set中使用sum函数吗?

1 个答案:

答案 0 :(得分:3)

在这种情况下,计数更有意义:

MyModel.objects.filter(toss_winner=F('winner'), win_by_runs=0).count()

因此,我们在这里仅检查有多少MyModel个记录满足给定条件。