You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确实现Django中统计店铺有作者书籍数量的查询集?

正确统计店铺中带作者书籍数量的Django查询写法

直接使用聚合函数的filter关键字参数即可实现需求,正确写法如下:

from django.db.models import Count, Q

Store.objects.annotate(
    books_count=Count('books', filter=Q(books__author__isnull=False))
).order_by('-books_count')

错误写法的问题

你之前的写法错误地将Q对象直接作为Count的第一个参数,而Count的第一个参数应该是要统计的关联字段名,过滤条件需要通过**filter关键字参数**传入。

代码说明

  • Count('books', filter=Q(books__author__isnull=False)):指定统计当前店铺关联的Book对象中,author字段不为空的记录数量
  • 该写法会保留所有Store对象,即使某个店铺没有带作者的书籍,其books_count会被设为0
  • 最后通过order_by('-books_count')按统计数量倒序排列

内容的提问来源于stack exchange,提问作者Adriano174

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 05:01:26