我有以下型号
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))
如何实现这一目标?
最佳答案
正如 @Red Cricket 提到的,您可以通过 dajngo 的 count()
获取过滤计数方法为
Client.objects.filter(my_otherfilters..<b>,request__completed=True).count()</b>
这将返回一个代表计数的整数值。
如果您想要 QuerySet
以及 count
,
qs = Client.objects.filter(my_otherfilters..<b>,request__completed=True</b>) # the "qs" will get the querysets
qs_count = qs<b>.count()</b> # "qs_count" will return the count
关于python - Django - 是否可以在 Count() 中执行查询集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52583613/