Django:如何处理关系

我有一个 ModelA 实例,想通过 ModelB 查询与 ModelA 相关的所有 ModelC 实例。


ModelA -> 所有具有 FK 的 ModelB 实例 rel_a = ModelA -> rel_c.all()


class ModelA(models.Model):

    # fields

    pass


class ModelB(models.Model):

    rel_a = models.ForeignKey('ModelA', ...)

    rel_c = models.ManyToMany('ModelC')

    # more fields


class ModelC(models.Model):

    # fields

    pass

我知道我将如何在 SQL 中执行此操作,但我真的不明白我应该如何理清这些关系


侃侃无极
浏览 114回答 1
1回答

波斯汪

您可以使用.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_cmodelbModelC.objects.filter(related_relc__rel_a=instance_of_modela).distinct()与related_relc或在字段中related_query_name。related_namerel_c
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python