我有以下型号:
class PipeType(models.Model):
name = models.CharField(max_length=255, null=False, blank=False)
class Pipe(models.Model):
pipe_type = models.ForeignKey(PipeType)
name = models.CharField(max_length=255, null=False, blank=True)
def __str__(self):
# return self.pipe_type.name + ' | ' + self.name # makes for 1081 sql queries
return self.name # makes for 29 sql queries
return pipe_type.name +' | ' + self.name 行只需显示管道的单个选择下拉列表需要16秒以上。如果我删除它并只显示self.name字段,那么它就大不相同了。 (注意:Pipe表中有263个项目,只有31个管道类型。)我是SQL新手,我无法弄清楚为什么这么长时间加载?
对于同一个管道,似乎有多次重复查询PipeType表,我不知道为什么会这样。任何帮助将不胜感激。这是我的Django工具栏SQL部分显示的内容(每个项目继续重复):
答案 0 :(得分:0)
将.select_related('pipe_type')
附加到获取下拉列表数据的查询集,以将第一种形式的__str__
缩减为一个查询。