从Django模板减少DB请求数

时间:2010-04-14 06:04:10

标签: django django-models django-templates

我为我的城市发布折扣优惠。优惠模型传递给模板(每页约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预填充所需的值,如何减少模板中的请求数?

2 个答案:

答案 0 :(得分:1)

以同样的方式,当然。当您在视图中获得商品列表时,请在那里select_related

答案 1 :(得分:0)

您可以通常 - 以优化的方式检索视图中的所有变量,然后将其传递给模板。模板不是(也不应该)是进行数据库魔术的地方。

但是,Django并不适合这种情况;缓存更常见。例如,很多标签可能会打数据库......