给出以下伪代码:
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)。
我希望这是有道理的。
谢谢
答案 0 :(得分:0)
在我看来,唯一的办法就是循环全部。 定义一些相关名称,您可以像这样尝试。 A的伪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的每个子模型的所有相关实例。 圈出此帮助