2010-12-20 1 views
4

私はdjangoのテンプレートにforループを持っています。結果はたくさん印刷されます(それぞれの結果はタイムスタンプ付きです)。タイムスタンプが特定の値に達すると、任意のデータ(たとえば、< hr/>)を印刷したいのですが、一度しか印刷しません。テンプレートでDjango "Display once"

{% for result in set %} 

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

{{ result.info }} 

{% endfor %} 

いる上記の真に相当、それはすべての結果のためにHRを出力します除いこれで結構です。私はそれが最初に印刷されるだけです。以下のような

何か:

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

、Djangoはそのテンプレートに割り当てる変数をサポートしていないので、私は何をすべきかについて損失のビットでよ。私はそれを行ういくつかの方法を考えることができます(フラグを切り替えるテンプレートアクセス可能なクラス/関数を使用するか、あるいはビュー内でより多くの処理を行いますが、データベース呼び出しの回数とデータの反復回数を増やす恐れがあります)しかし、私は、これをやるのにシンプルな "ジャンゴーイ"の方法があるのだろうかと思っています。

感謝=)

答えて

4

あなたは、組み込みifchangedテンプレートタグ使用することができます。

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

すばらしいです!ちょうど私が後にしたものではありませんが、私が完璧に必要なことをしています(私は文字列を格納するために期待していたより少し高いですが、十分に良いです)。ありがとう=) – Tyris