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

如何在Django中获取指定Procedure集合关联的ProcedureCategories?

获取关联的ProcedureCategories方法

这里提供两种实用的实现方式,按需选择:

方法一:直接反向查询(推荐,高效)

从ProcedureCategories模型出发,利用反向关联过滤关联的Procedure满足你的条件,一次查询完成:

categories = ProcedureCategories.objects.filter(
    procedure__type=2,
    procedure__groups__user=request.user
).distinct()
  • 这里的procedure__是Django自动生成的反向关联(外键在Procedure模型,反向关联名为模型小写)
  • distinct()用来避免同一个分类被多次返回(多个Procedure可能属于同一分类)

方法二:基于已有的procedureModels集合获取

如果已经拿到了procedureModels,可以通过它提取关联分类:

方式1:先取分类ID再查询

# 提取非空的分类ID并去重
category_ids = procedureModels.exclude(category__isnull=True).values_list('category_id', flat=True).distinct()
categories = ProcedureCategories.objects.filter(id__in=category_ids)

方式2:直接通过关联对象获取

categories = procedureModels.exclude(category__isnull=True).values_list('category', flat=True).distinct()

关键提示

  • 因为你的Procedure模型中category字段允许为null,记得用exclude(category__isnull=True)排除空分类的情况,避免无效数据。
  • 方法一的查询效率更高,属于单SQL查询;方法二更适合已经持有procedureModels对象的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 19:01:10