首页 > 解决方案 > 查询集上的 Django 总和

问题描述

我在 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在 when 中的值等于 1 时添加then=1。我知道在没有条件的情况下使用 sum 函数,但是因为我有条件,我应该在哪里使用 sum 函数query_set

标签: djangodjango-ormdjango-annotate

解决方案


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

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

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


推荐阅读