При вызове метода из шаблона база данных запрашивается каждый раз?

Допустим, у вас есть следующий метод в модели:

    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 %}
Вернуться на верх