2017-02-01 13 views
0

上の変数に値で渡され、コンペア:Djangoは、私はテーブルの内側に私のテンプレートでは、以下のいる場

{% for sb in ship_back %} 
    <tr> 
     <td>{{ sb.ring_name }}</td> 
     <td>{{ sb.release.ring }} pp{{ sb.release.ppack }}</td> 
    </tr> 
{% endfor %} 

これは次の出力を生成します。

ラリー15 PP28

萌え15 PP29

カーリー15 PP30

Shemp 16 pp7

{{sb.release.ring}}の値が変わるたびにテーブルに水平線を追加したいと思います。上記の例では、それはCurlyとShempの間に入ります。

通常、これはforループの外側に変数を作成し、初期値を0に設定し、forループの始めに比較を行い(0の場合は無視する)、それが現在の値と一致しない場合{{sb.release.ring}}、私は水平線を挿入します。

私はDjangoでこれを達成する方法を理解するのに苦労しています。

答えて

0

は、以下のように、ifchangedタグを使用してみてください:

{% for sb in ship_back %} 

    {# <!-- Style this however you like --> #} 
    {% ifchanged sb.release.ring %} 
     <tr><td>----</td></tr> 
    {% endifchanged %} 

    <tr> 
     <td>{{ sb.ring_name }}</td> 
     <td>{{ sb.release.ring }} pp{{ sb.release.ppack }}</td> 
    </tr> 
{% endfor %} 
+0

ほとんど私のために働いていること。それはLarryの前とShempの前に


を入れています。後者は私が望むものに適しています。私は、ifchangedが変更として何かになることを評価していることを推測しているので、それは
もそこに置いているのです。 –

+0

ifchangedブロック内にif文を追加することで、動作させることができました。 {%は%sb.release.ring.ring ifchanged} {%を場合forloop.counter> = 2%}


{%のENDIFの%} {%endifchanged%} –

+0

それが追加としては良い考えではない理由がない限り、私はこれを受け入れられた答えとしてマークします。 –

関連する問題