我的模特:
class B(models.Model):
label = models.CharField()
class A(models.Model):
b = models.OneToOneField(B, null=True, blank=True, on_delete=models.PROTECT)
def __str__(self):
return u'[{}] Event:'.format(self.b.label)
现在,在使用django调试工具栏的请求期间查看查询时,我注意到许多查询执行了200多次。我知道我将使用prefetch_related来解决,但是当在str方法内完成查找时,我必须把它放在哪里?
答案 0 :(得分:3)
您的GenericView
或ModelViewSet
应该有一个queryset
属性,用于定义应该处理的设置。
您需要在那里添加prefetch_related
/ select_related
。
class UserList(generics.ListCreateAPIView):
queryset = User.objects.all().prefetch_related('groups')
serializer_class = UserSerializer
permission_classes = (IsAdminUser,)