所以,之前曾提出过类似的问题,但我一直无法找到确凿的答案。
鉴于以下模型:
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字段),那么我看不出它是如何工作的。
我确信这是我在文档中忽略的东西,考虑到这类问题的基本和常见。
答案 0 :(得分:3)
这与select_related
或prefetch_related
无关。要获得具有结构的父项的所有子项,您将始终需要执行两个查询:
my_children = list(my_parent.childa_set.all()) + list(my_parent.childb_set.all())