2011-06-21 5 views
0

の多分使用して、カスタム版は私は2つのモデルを持っています{% for %}タグを使用してください。また、関連するタグを表示する必要がありますが、以前の繰り返しと異なる場合にのみ表示します。 これは、5つの段落のリストをレンダリングしていて、最初の4つのタグが同じタグを持っていても、5つ目のタグに異なるタグがある場合、最初と5番目の段落だけでタグを表示したいと考えています。クエリセットの比較ですが、{%ifchanged%}タグ

私は{% ifchanged %}ビルドタグを使用しようとしましたが、私は考え出したとして、それは常にTrueを返しますので、私はparagraph.tags.allは、同じ要素が含まれていても、{% ifchanged paragraph.tags.all %}を使用することはできません。

タグのカスタムテンプレートタグ{% iftagschanged %}を使用していますが、他の比較方法を使用すると、クエリーセットの内容が常に一致しないクエリセットの内容が比較されます。 問題は、私が{% ifchanged %} tag in django sourceを見ていると、それは私には少し複雑に見えます。私の場合は正しく動作するように変更する方法がわかりません。

私は、アドバイスや多分なんらかのアイデアに感謝しています。

答えて

1

パラグラフモデルで、データ構造内の関連するタグを返すカスタムメソッドを作成します。このタグは、簡単に比較することができます。たとえば、セットとしてifchangedの引数として使用します。

class Paragraph(models.Model): 
    def tags_as_set(self): 
     return set(t.tag for t in self.tags.all()) 


{% ifchanged paragraph.tags_as_set %} 
+0

ありがとう! – Dzejkob