查询集上的Django和

查询集上的Django和,django,django-orm,django-annotate,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内置的求和函数,在que

我在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内置的求和函数,在
query\u集合
中的值等于1时进行相加,就像在
then=1时那样。我知道在没有条件的情况下使用sum函数,但在这里,因为我有条件在这个
query\u集合

中使用sum函数。在这种特定情况下,计数更有意义:

MyModel.objects.filter(toss\u winner=F('winner'),win\u by\u runs=0)。count()

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

因此,这个条件类似于检查MyModel.toss\u winner=MyModel.winner和MyModel.win\u by\u runs=0?@Laxman:是的。因此,我们计算该条件成立的
MyModel
记录的数量。Ok。最后一个问题。如何在django中检查不等于?因为根据我的理解,这里没有“!=”django中的操作员。要通过运行来检查win_!=0运算符应该是什么?@Laxman:对不起,参数确实应该交换,所以
MyModel.objects.filter(~Q(win\u by\u runs=0),toss\u winner=F('winner')).count()
MyModel.objects.filter(toss_winner=F('winner'), win_by_runs=0).count()