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

如何将获取含已发布条目分类的两个Django查询合并为一个?

合并查询获取包含已发布条目的分类

当然可以!你完全能把这两个查询合并成一个更简洁高效的单查询,而且Django ORM对这种跨关联模型的查询支持得很好。

直接通过Category的查询集,利用双下划线__关联到Entry的字段进行过滤就行,再加上distinct()避免重复结果,代码如下:

categories = Category.objects.filter(entries__is_published=True).distinct()

为什么这么写可行?

  • Django ORM的双下划线语法允许你跨关联模型查询字段,这里entries__is_published=True表示筛选出至少有一个已发布条目的分类。
  • 加上.distinct()是因为如果一个分类下有多个已发布条目,默认查询会返回该分类多次,distinct()会帮你去重,确保每个分类只出现一次。

这个写法只会生成一次数据库请求,相比原来的两次查询,性能更优,代码也更简洁。

内容的提问来源于stack exchange,提问作者Vlad T.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:11:15