2010-12-20 55 views
4

我在我的Django模板中有一個for循環,打印出一大堆結果(每個結果都有時間戳)。一旦時間戳達到特定值,我想打印任意一段數據(例如<小時/ >),但我只想打印一次。在模板中Django「顯示一次」

{% for result in set %} 

{% if some_time > result.time %} 
<hr /> 
{% endif %} 

{{ result.info }} 

{% endfor %} 

這很好,除了它會打印每個結果上面的等於真的HR。我所追求的只是第一次印刷。

喜歡的東西:

{% if some_time > result.time and bool_flag %} 

現在,由於Django不支持其模板分配變量,我在一個位適合做什麼損失的。我可以想到一些方法來實現它(使用模板可訪問的類/函數切換標誌,或者在視圖中執行更多處理,但是我擔心這會增加數據庫調用和數據迭代的次數) ,但我想知道是否有一個很好的簡單的「djangoey」方法。

感謝=)

回答

4

您可以使用內置ifchanged模板標籤:

{% ifchanged %} 
    {% if some_time > result.time %} 
     <hr /> 
    {% endif %} 
{% endifchanged %} 
+0

太棒了!不完全是我以後的事情,但是完全符合我的需要(比我預期的要稍微高一點,因爲存儲了字符串,但是足夠好)。謝謝=) – Tyris 2010-12-20 03:31:48