鉴于以下模型,我希望提高过滤器的性能,以避免对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))
答案 0 :(得分:0)
它的工作方式与过滤器(b__c__d
)类似。只需预取:
''.join(A.objects.filter(b__c__d=self.d).prefetch_related('b__c__d').values_list('name', flat=True))