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

如何在Django中获取仅关联了文章的ArticleCategory对象?

获取至少关联一篇Article的ArticleCategory对象

针对你的Django模型,有两种常用方法可以筛选出至少关联一篇文章的分类:

方法1:反向关联筛选 + 去重

利用Django的反向关联特性,结合filter和distinct()实现:

ArticleCategory.objects.filter(article__isnull=False).distinct()
  • 原理:article__isnull=False会筛选出存在关联Article的分类;distinct()用来去除因同一分类关联多篇文章而产生的重复结果。

方法2:子查询(性能更优)

使用Exists子查询直接验证分类是否有关联文章,适合数据量较大的场景:

from django.db.models import Exists, OuterRef

ArticleCategory.objects.filter(
    Exists(Article.objects.filter(Category=OuterRef('pk')))
)
  • 原理:子查询会检查当前分类是否存在对应的Article记录,只返回符合条件的分类,无需额外去重,查询效率更高。

注:因为你的Article模型中多对多字段名为Category,所以ArticleCategory的反向关联默认是article_set,在查询中可以简写为小写的模型名article。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 22:15:40