При вызове метода из шаблона база данных запрашивается каждый раз?
Допустим, у вас есть следующий метод в модели:
def get_images(self):
return ReleaseImage.objects.filter(release=self.id)
И вы вызываете его из шаблона следующим образом:
{% if release.get_images %}{{ MEDIA_URL }}{{ release.get_images.first }}{% endif %}
Запрашивается ли база данных дважды, или существует какая-то закулисная оптимизация, которая предотвращает это? В противном случае это может быть крайне неэффективно.
It queries twice here, yes. But we can optimize it with a {% with … %}
template tag [Django-doc]:
{% with images=release.get_images %}
{% if images %}{{ MEDIA_URL }}{{ images.0 }}{% endif %}
{% endwith %}