39

簡単にするために、これらを django モデルと仮定します。

class A():

    a = manytomany('B')

class B():

    b = charfield()
    z = foreignkey('C')

class C():

    c = charfield()

z次のようなものも取得できますか。

foo = A.objects.get(pk = 1).prefetch_related('a').select_related('a__z')
4

2 に答える 2

30

必要なprefetch_related呼び出しは 1 つだけです。

foo = A.objects.prefetch_related('a__z').get(pk=1)

これにより、両方のテーブルがプリフェッチされます。Django 1.7+ では、 koniiiik の回答のPrefetchように、オブジェクトを使用してパフォーマンスを向上させることができます。

于 2012-12-20T13:57:50.680 に答える