Кеширование Django SQL-запросов на внешние ключи - PullRequest
2 голосов
/ 17 февраля 2012

У меня есть модель, которая содержит внешний ключ для другой модели:

class MyModel(models.Model):
   ...
   picture = models.ForeignKey(Picture)
   ...

Я мой шаблон, у меня есть экземпляр MyModel и в трех разных местах я получаю доступ к его атрибуту изображения таким образом {{ mymodel.picture }}.

Когда я открываю debug_toolbar, я вижу, что к базе данных было сделано три разных запроса SQL.Разве Django не должен кэшировать первый запрос и обслуживать его потом?Возможно ли это сделать?

Ответы [ 2 ]

2 голосов
/ 17 февраля 2012
{% with picture = mymodel.picture %}

My Picture Size Large {{ picture }}
My Picture Size Medium {{ picture }}
My Picture Size Small  {{ picture }}

{% endwith %}
1 голос
/ 17 февраля 2012

Вы можете попробовать с тегом {% with p = mymodel.picture %}...{% endwith %}, см. Здесь: https://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#with

...