Django Model __str__函数导致大量查询

时间:2014-08-28 13:09:45

标签: python django-models django-queryset

我有以下型号:

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部分显示的内容(每个项目继续重复):imgur image

1 个答案:

答案 0 :(得分:0)

.select_related('pipe_type')附加到获取下拉列表数据的查询集,以将第一种形式的__str__缩减为一个查询。