python - Django - 是否可以在 Count() 中执行查询集

标签 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))

如何实现这一目标?

最佳答案

正如 @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/

相关文章:

python - cx_freeze 和 python 3.2.2 有问题吗?

python - django.db.utils.OperationalError : foreign key mismatch - "project_projectpage" referencing "auth_user"

django 在生产服务器上打印信息

python - Django orm - 如何在不同日期的查询中获取不同的字段项

python - 将具有互元素的所有子数组合并为一个子数组

python - 根据 sort_values 标准添加水平线以绘制

python - Django 模型可以使用 MySQL 函数吗?

django - DRF 如何只将第一个序列化对象返回到 View ?

python - Django:Queryset.union() 和 OR 运算符有什么区别?

django - 在 Django Serializer 中获取反向关系