1

所以,以前也有人问过类似的问题,但我一直无法找到一个确定的答案。

给定以下模型:

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')

我怎样才能得到给定父母的所有孩子?Select related 只会继续前进,因此据我所知,这不起作用。与预取相关的似乎仅在父级中有实际字段引用时才起作用(即,如果父级有一个带有子级的 m2m 字段),所以我看不出它是如何工作的。

我确信这是我刚刚在文档中忽略的东西,因为这类问题是多么初级和普遍。

4

1 回答 1

3

select_related这与or无关prefetch_related。要使用您的结构获取父级的所有子级,您将始终需要执行两个查询:

my_children = list(my_parent.childa_set.all()) + list(my_parent.childb_set.all())
于 2012-06-25T16:18:18.290 回答