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

如何通过分类ID查询CourseRun?Django多对多反向查询问题

解决方案:通过分类ID查询CourseRun

没问题,我来帮你搞定这个Django查询的问题!因为你的多对多关联定义在Category模型中,且给Course设置了反向关联的related_name='category_set',只需要调整查询里的关联字段名称,就能实现你想要的效果。

正确的查询语句

CourseRun.objects.filter(course__category_set__id__in=[1, 2])

为什么这样写?

  • 当多对多关系定义在Category侧时,Course对象的反向关联集合由related_name指定(这里是category_set),代表该课程所属的所有分类。
  • 查询时我们需要沿着CourseRun -> course -> category_set的路径,通过分类ID的__in条件,筛选出关联的CourseRun记录。

补充说明

如果当时没有显式设置related_name,Django会默认用category_set作为反向关联名称(模型名小写加_set),所以这个查询写法依然适用。要是后续修改了related_name,只需要把查询里的category_set替换成新名称就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 17:42:51