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

特定の親のすべての子を取得するにはどうすればよいですか?関連する選択は先に進むだけなので、私が知る限りでは機能しません。プリフェッチ関連は、親に実際のフィールド参照がある場合にのみ機能するようです(つまり、親に子を持つm2mのフィールドがある場合)。そのため、それがどのように機能するかわかりません。

この種の問題がいかに初歩的で一般的であるかを考えると、これは私がドキュメントで見落としているものだと確信しています。

4

1 に答える 1

3

select_relatedこれはorとは関係ありませんprefetch_related。構造を持つ親のすべての子を取得するには、常に次の 2 つのクエリを実行する必要があります。

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