prefetch_related with nested m2m

时间:2016-07-21 15:56:37

标签: django django-models

鉴于以下模型,我希望提高过滤器的性能,以避免对DB进行不必要的调用。

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 实现此目的?

''.join(A.objects.filter(b__c__d=self.d).prefetch_related(' ... ' ).values_list('name', flat=True))

1 个答案:

答案 0 :(得分:0)

它的工作方式与过滤器(b__c__d)类似。只需预取:

''.join(A.objects.filter(b__c__d=self.d).prefetch_related('b__c__d').values_list('name', flat=True))