为了账号安全,请及时绑定邮箱和手机立即绑定

Django:如何处理关系

Django:如何处理关系

侃侃无极 2023-06-20 10:43:00
我有一个 ModelA 实例,想通过 ModelB 查询与 ModelA 相关的所有 ModelC 实例。ModelA -> 所有具有 FK 的 ModelB 实例 rel_a = ModelA -> rel_c.all()class ModelA(models.Model):    # fields    passclass ModelB(models.Model):    rel_a = models.ForeignKey('ModelA', ...)    rel_c = models.ManyToMany('ModelC')    # more fieldsclass ModelC(models.Model):    # fields    pass我知道我将如何在 SQL 中执行此操作,但我真的不明白我应该如何理清这些关系
查看完整描述

1 回答

?
波斯汪

TA贡献1811条经验 获得超4个赞

您可以使用.filter(…)表达式 [Django-doc]进行查询:

ModelC.objects.filter(modelb__rel_a=instance_of_modela)

使用.distinct()[Django-doc]过滤掉重复项:

ModelC.objects.filter(modelb__rel_a=instance_of_modela).distinct()

如果您在from to (so ) 中指定了related_query_name=…[Django-doc]或related_name=…[Django-doc],则名称将替换为那个,因此它是:ManyToManyFieldModelBModelCrel_cmodelb

ModelC.objects.filter(related_relc__rel_a=instance_of_modela).distinct()

related_relc或在字段中related_query_namerelated_namerel_c


查看完整回答
反对 回复 2023-06-20
  • 1 回答
  • 0 关注
  • 83 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信