Django - 反向外键select_related

时间:2012-06-25 16:12:03

标签: django foreign-keys

所以,之前曾提出过类似的问题,但我一直无法找到确凿的答案。

鉴于以下模型:

class Parent(models.Model):
    name = models.CharField(max_length=250)

class ChildA(models.Model):
    parent = models.ForeignKey('Parent')

class ChildB(models.Model):
    parent = models.ForeignKey('Parent')

我怎样才能得到父母的所有孩子?选择相关只是前进,所以这是我无法解释的工作。相关的预取似乎仅在父项中存在实际字段引用时才会运行(即,如果父项具有与子项相关的m2m字段),那么我看不出它是如何工作的。

我确信这是我在文档中忽略的东西,考虑到这类问题的基本和常见。

1 个答案:

答案 0 :(得分:3)

这与select_relatedprefetch_related无关。要获得具有结构的父项的所有子项,您将始终需要执行两个查询:

my_children = list(my_parent.childa_set.all()) + list(my_parent.childb_set.all())