2010-12-20 103 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