例如,在Django 1.8中:
在这种情况下,
有没有一种方法可以预取我需要的信息,使得
class A(models.Model):
x = models.BooleanField(default=True)
class B(models.Model):
y = models.ManyToManyField(A)
class C(models.Model):
z = models.ForeignKey(A)
在这种情况下,
C.objects.all().prefetch_related('z__b_set')
无法起作用。有没有一种方法可以预取我需要的信息,使得
c[0].z.b_set.all()
可以正常工作,而不需要进行额外的查询?
select_related
。 - 301_Moved_PermanentlyFieldError: Invalid field name(s) given in select_related: 'b_set'.
。 - SemC.objects.all().prefetch_related('z__b_set')
并没有像它应该的那样改变查询。查询字符串(str(queryset.query)
)与C.objects.all()
完全相同。 - SemC.objects.all().select_related('z').prefetch_related('z__b_set')
是什么意思? - 301_Moved_Permanentlyz
作为LEFT JOIN
添加到查询中,但是b_set
仍未包含在查询中。 - Sem