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

Django如何获取与指定模型关联的所有ManyToMany字段对应对象

错误原因

News.categories是模型类的多对多字段描述符,仅可作用于模型实例,直接通过类调用时不属于查询管理器,因此无法执行all()等查询方法,触发AttributeError。

解决方案

1. 查询所有关联过News模型的分类

通过Category模型的反向关联related_name查询即可:

# 去重获取所有至少绑定了1条News的分类
Category.objects.filter(news__isnull=False).distinct()

2. 查询仅绑定News、未绑定Reviews的分类

如果要筛选「只和其中一个模型关联、完全不和另一个模型绑定」的分类,增加排除条件即可:

Category.objects.filter(news__isnull=False).exclude(reviews__isnull=False).distinct()

补充:查询单条News记录关联的分类

如果是要获取某个具体News实例关联的分类,需要先拿到实例再调用多对多字段:

# 先获取指定News实例
target_news = News.objects.get(id=xxx)
# 再查询关联分类
target_news.categories.all()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:57:05