【问题标题】:Decrease DB requests number from Django templates减少来自 Django 模板的数据库请求数
【发布时间】:2010-04-14 06:04:10
【问题描述】:

我发布我所在城市的折扣优惠。报价模型被传递给模板(每页约 15 个报价)。每个报价都有很多项目(每个项目都有 FK 到它的报价),因此我必须从模板发出大量的数据库请求。

{% 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 来预填充所需的值,如何减少模板中的请求数量?

【问题讨论】:

    标签: django django-models django-templates


    【解决方案1】:

    当然,同样的方式。当您在视图中获得优惠列表时,请在此处执行select_related

    【讨论】:

    • 但是怎么做呢?我应该这样做 - {% for item.select_related in offer.1 %} 吗?
    • 不——正如我所说,在视图中。如果您首先确切地展示您如何获得offer,这将有所帮助。
    【解决方案2】:

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

    然而,Django 不太适合。大量缓存更为常见。例如,很多标签可能会做数据库命中...

    【讨论】:

      猜你喜欢
      • 2020-06-02
      • 1970-01-01
      • 2014-07-31
      • 1970-01-01
      • 2015-11-15
      • 2016-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多