Python 在外键上缓存Django SQL查询
我有一个模型,其中包含不同模型的外键:Python 在外键上缓存Django SQL查询,python,django,django-templates,Python,Django,Django Templates,我有一个模型,其中包含不同模型的外键: class MyModel(models.Model): ... picture = models.ForeignKey(Picture) ... 在我的模板中,我有一个MyModel的实例,在三个不同的地方,我以这种方式访问它的picture属性{{MyModel.picture} 当我打开debug_工具栏时,我看到对数据库进行了三种不同的SQL查询。Django不应该缓存第一个查询并在之后提供它吗?可以这样做吗?您可以尝试使用标签
class MyModel(models.Model):
...
picture = models.ForeignKey(Picture)
...
在我的模板中,我有一个MyModel的实例,在三个不同的地方,我以这种方式访问它的picture属性{{MyModel.picture}
当我打开debug_工具栏时,我看到对数据库进行了三种不同的SQL查询。Django不应该缓存第一个查询并在之后提供它吗?可以这样做吗?您可以尝试使用标签
{%with p=mymodel.picture%}…{%endwith%}
,请参见此处:是的,Django应该在第一个查找之后缓存该查找。肯定还有其他事情发生-您确定每次都有相同的mymodel
实例吗?
{% with picture = mymodel.picture %}
My Picture Size Large {{ picture }}
My Picture Size Medium {{ picture }}
My Picture Size Small {{ picture }}
{% endwith %}