Django - 从父母那里查询许多FK模型
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django - 从父母那里查询许多FK模型相关的知识,希望对你有一定的参考价值。
给出以下伪代码:
class A(models.Model)
class B(models.Model)
a = models.FK(A)
class C(models.Model)
b = models.FK(B)
class D(models.Model)
b = models.FK(B)
如果我有A的PK,我怎样才能检索每个儿童模型的所有相关实例? (B,C和D)。
我希望这是有道理的。
谢谢
答案
在我看来,唯一的方法是循环所有。定义一些相关的名称,你可以这样尝试。 P = Pk的伪pk
class A(models.Model):
class B(models.Model):
a = models.FK(A, related_name='related_B')
class C(models.Model):
b = models.FK(B, related_name='related_C')
class D(models.Model):
b = models.FK(B, related_name='related_D')
a = A.objects.get(pk=pk)
results = []
results.append(a.related_B.all())
for item in a.related_B.all():
results.append(item.related_C.all())
results.append(item.related_D.all())
并且结果现在具有A的每个子模型的所有相关实例。这个帮助
以上是关于Django - 从父母那里查询许多FK模型的主要内容,如果未能解决你的问题,请参考以下文章
Django:使用嵌套模型从许多关系查询中进行复杂排序和过滤
Django 3 - 使模型的 FK 下拉列表仅显示当前用户的数据
Django Admin Cookbook-35如何使用带有大量对象的FK管理模型