我有以下型号
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))
我该如何实现?
答案 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'))