0

簡単な質問があります。

私のテンプレート ファイルには、同じ変数が{{ category.photo_set.count }}2 回あります。

例えば:

        <div class="galleries">

            <div class="row">
            {% for category in categories %}
                <div class="five columns{% cycle " alpha" "" " omega" %}">

                    <div class="image"><a href="{% url gallery.views.category category.slug %}"><img src="{{ MEDIA_URL }}{{ category.image }}" alt="" /></a></div>

                    <h4>{{ category.name }}</h4>       
                    <p>Ilość zdjęć: {{ category.photo_set.count }}</p>  

                    {%  if category.photo_set.count > 0 %}<a class="button" href="{% url gallery.views.category category.slug %}">zobacz</a>{% endif %}
                </div>
            {% endfor %}

            </div>

        </div>

そして、このコードがデータベースに対してまったく同じクエリを 2 つ生成していることに気付きました。

30 Query    SELECT COUNT(*) FROM `gallery_photo` WHERE `gallery_photo`.`category_id` = 1
30 Query    SELECT COUNT(*) FROM `gallery_photo` WHERE `gallery_photo`.`category_id` = 1

どうすればこれを防ぐことができますか?

4

1 に答える 1

2

withこれは、テンプレートタグの優れたユースケースです: https ://docs.djangoproject.com/en/dev/ref/templates/builtins/#with

ブロックを次のようにラップするだけです

{% with photo_count=category.photo_set.count %}
...
{{photo_count}}
...
{% endwith %}
于 2012-10-24T15:04:29.590 に答える