如何在Django模板中使用select_related作为模型方法?

时间:2015-08-02 20:01:45

标签: django django-models django-templates

我一直在使用模型方法返回模型的详细名称(主题)。 get_verbose_name方法如下所示:

def get_verbose_name(self):
    return self.city.name

如您所见,此方法使用ForeignKey检索另一个模型。这个ForeignKey看起来像这样:

city = models.ForeignKey(City, blank = True, null = True)

不幸的是,这个模型方法在模板中调用时使用:

{{ topic.get_verbose_name }}

生成重复的查询。出于性能原因,是否可以在模型方法中使用select_related?我知道您可以使用模型管理器默认使用select_related,但出于各种原因,我更倾向于仅对此特定方法使用select_related。

谢谢!

1 个答案:

答案 0 :(得分:1)

不,在模型方法中无法使用select_related。在调用方法时,已经从数据库中提取topic,因此使用select_related为时已晚。