Django-是否可以在Count()中进行查询

时间:2018-10-01 01:38:46

标签: python django django-queryset

我有以下型号

class Client(models.Model):
    ...

class Request(models.Model):
    ...
    client = models.ForeignKey(Client, on_delete=models.SET_NULL, null=True)
    completed = models.BooleanField()

我想获取客户端查询集所有已完成请求的计数。以下语句可获取所有请求,但不会检查请求是否已完成。

clients = Client.objects.filter(...).annotate(Count('request'))

我想要的是这个

clients = Client.objects.filter(...).annotate(Count(request__completed=True))

我该如何实现?

2 个答案:

答案 0 :(得分:1)

如@Red Cricket所述,您可以通过dajngo的count()方法获得 过滤计数

Client.objects.filter(my_otherfilters..,request__completed=True).count()

这将返回表示计数的 整数值


如果需要 QuerySet count

qs = Client.objects.filter(my_otherfilters..,request__completed=True) # the "qs" will get the querysets
qs_count = qs.count() # "qs_count" will return the count

答案 1 :(得分:0)

from django.db.models import Count
ModelName.objects.aggregate(Count('id'))

please check the ref for more