【发布时间】:2018-02-10 15:07:15
【问题描述】:
我的模型:
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 方法中完成查找时,我必须把它放在哪里?
【问题讨论】:
-
不!不要把它放在
__str__。请发布您的视图代码,这很可能是所有这些查询发生的地方 -
200+次是由可浏览API形式的选择引起的
-
好吧,我不认为这是可定制的。只要您的最终用户看不到该页面,就可以了。你应该优化自己的观点
标签: django database django-rest-framework