2012-03-31 76 views
4

我注意到我得到了太多的數據庫命中,同時渲染了一些複雜的頁面,並且有很多相關的實體查找。我可以通過在視圖中儘可能使用select_related()來部分優化它,但是我還可以從條件檢查中獲得另一部分命中,也許在文檔中可能會忽略某些內容。在檢查條件時避免Django模板中的額外SQL調用

我用django-debug-toolbar學習這個表達式會給我兩個數據庫命中 - 一個檢查條目是否存在,另一個是實際顯示它。我做這個查找的原因是因爲我不希望空的「()」到處都是。是否有模板標籤或我可以用來圍繞價值的東西?

{% if project__current_phase__recent_status__comment %} 
({{ project__current_phase__recent_status__comment }}) 
{% endif %} 

回答

5

with模板標籤。從文檔:

在一個簡單的名字下緩存一個複雜的變量。當 多次訪問「昂貴」的方法(例如,命中數據庫的方法) 時,這很有用。

實施例:

{% with project_comment=project__current_phase__recent_status__comment %} 
    {% if project_comment %} 
     ({{ project_comment }}) 
    {% endif %} 
{% endwith %} 
相關問題