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 FK 约束投诉,但对象在那里。我想念啥?

Django 3 - 使模型的 FK 下拉列表仅显示当前用户的数据

Django Admin Cookbook-35如何使用带有大量对象的FK管理模型

Django ORM:未继承子级的字段和值。对象重复。 (使用Django管理界面)

从某些父母那里退回那些他们的孩子的某些财产等于某个价值的记录?