2016-07-21 8 views
0

次のモデルでは、DBへの不要な呼び出しを避けるためにフィルタのパフォーマンスを向上させたいと考えています。ネストしたm2mとprefetch_related

class A(models.Model): 
    name = models.CharField() 
    b = ManyToManyField(B) 

class B(models.Model): 
    c = ManyToManyField(C) 

class C(models.Model): 
    d = ManyToManyField(D) 

class D(models.Model): 
    foo = models.TextField() 

どのように私はでこれを達成できるをprefetch_related? ').values_list('name', flat=True))

+0

'prefetch_related'を指定しないと、ただ1つのクエリを使うべきです。それがあなたができる最高です。 – Brian

答えて

0

これは、フィルタ(b__c__d)と同じように機能します。 prefetch:

''.join(A.objects.filter(b__c__d=self.d).prefetch_related('b__c__d').values_list('name', flat=True)) 
関連する問題