我为我的城市发布折扣优惠。优惠模型传递给模板(每页约15个优惠)。每个商品都有很多商品(每个商品都有FK到它的优惠),因此我必须从模板中提出大量的DB请求。
{% for item in offer.1 %}
{{item.descr}}
{{item.start_date}}
{{item.price|floatformat}}
{%if not item.tax_included %}{%trans "Without taxes"%}{%endif%}
<a href="{{item.offer.wwwlink}}" >{%trans "Buy now!"%}</a> </div>
<div class="clear"></div>
{% endfor %}
因此每页有大约200-400个DB请求,这是我预期的异常。
在django代码中,可以使用select_related预填充所需的值,如何减少模板中的请求数?
答案 0 :(得分:1)
以同样的方式,当然。当您在视图中获得商品列表时,请在那里select_related
。
答案 1 :(得分:0)
您可以通常 - 以优化的方式检索视图中的所有变量,然后将其传递给模板。模板不是(也不应该)是进行数据库魔术的地方。
但是,Django并不适合这种情况;缓存更常见。例如,很多标签可能会打数据库......