我有一個(gè) ModelA 實(shí)例,想通過(guò) ModelB 查詢(xún)與 ModelA 相關(guān)的所有 ModelC 實(shí)例。ModelA -> 所有具有 FK 的 ModelB 實(shí)例 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 中執(zhí)行此操作,但我真的不明白我應(yīng)該如何理清這些關(guān)系
1 回答
波斯汪
TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可以使用.filter(…)表達(dá)式 [Django-doc]進(jìn)行查詢(xún):
ModelC.objects.filter(modelb__rel_a=instance_of_modela)
使用.distinct()[Django-doc]過(guò)濾掉重復(fù)項(xiàng):
ModelC.objects.filter(modelb__rel_a=instance_of_modela).distinct()
如果您在from?to?(so ) 中指定了related_query_name=…[Django-doc]或related_name=…[Django-doc],則名稱(chēng)將替換為那個(gè),因此它是:ManyToManyFieldModelBModelCrel_cmodelb
ModelC.objects.filter(related_relc__rel_a=instance_of_modela).distinct()
與related_relc或在字段中related_query_name。related_namerel_c
添加回答
舉報(bào)
0/150
提交
取消
