2010-11-09 107 views
1

我一直在Django的模板系統標記'ifchanged'的問題。我無法確定它的行爲。將django的ifchanged與循環過程中的最後一個值進行比較,還是將最後一個值與ifchanged的最後一個值進行比較?

基本上,如果我有這樣的設置:

{% for c in list %} 
    {% ifchanged c.group %} 
     group has changed! 
    {% else %} 
     {% ifchanged c.active %} 
      item is active! 
     {% endifchanged %} 
    {% endifchanged %} 
{% endfor %} 

如果C [0]有其c.group改變,則c [1]還沒有,但c.active已經改變,有時「項目處於活動狀態!「將不會出現。

這使我相信,如果只改變了檢查由ifchanged評估的最後一個值而不是forloop中的最後一個值。它是否正確?

如果是這樣,我可能不得不跳過一些箍來完成這項工作。

謝謝。

回答

1

那麼,花了幾個小時的修補程序和(糟糕的)看django代碼後,我終於想出了一些有用的東西。我認爲可以肯定地說,如果changed與已經評估過的一樣,而不是循環中的最後一個值是什麼。

下面是對上述情況的工作的代碼示例:

{% for c in list %} 
    {% ifchanged c.group %} 
     group has changed! 
    {% endifchanged %} 

    {% ifchanged c.active %} 
     {% ifchanged c.group %} 
     {% else %} 
      item is active! 
     {% endifchanged %} 
    {% endifchanged %} 

{% endfor %} 

這樣,c.active獲取評估每次和「產品激活!」顯示它應該。這可能最終會在某個時候出現「陷阱」,具體取決於「c.group」在兩個測試之間是否有效。我不確定,但它迄今爲止對我有用。

希望這可以幫助任何人在這種情況下結束。

相關問題