2011-12-28 14 views
1

タイトルが不明かどうかわかりませんが、ここで説明しようとします。最初のいくつかの序文 - 私がしようとしているのは、同じ属性を持つオブジェクトの損失を表示することです。別の属性に基づいてそれらをグループ化したいと思います。Djangoテンプレート - 他の場所の値に基づいて要素の値を設定する

  1. 最初に、最初の属性のすべての異なる値を取得します。
  2. 第2の属性のすべての異なる値を取得します。
  3. 最後に私はその後、私は列の値を反復し、多分しかしそこにいくつかのオブジェクトを属性

の両方に同じ値を持つリスト内のすべてのオブジェクトを表示するすべてのオブジェクト

  • のリストを取得最初の属性を持ち、2番目の属性を持たないので、その属性の名前を表示したくありません。たぶん、このテンプレートのスニペットはもっと明確になります。これは、含まれているだけinner two loops

    {% for attr2 in attr2_list %} 
        <li class='category'> {{ attr1.attr1 }} 
         <ul> 
          {% set counter = 0 %} 
          {% for object in object_list %} 
           {% if object.attr1 == attr1.attr1 and object.attr2 = attr2.attr2 %} 
            {% increment counter %} 
            <li><a href="{{ object.get_absolute_url }}"> Test {{counter}} </a></li> 
           {% endif %} 
          {% endfor %} 
         </ul> 
        </li> 
    {% endfor %} 
    

    私がしたいことはループのための特定のattr2ための満たされないならば、私は私が自分自身を明らかにしたと思っている。この<li class='category'> {{ attr1.attr1 }}

    を表示したいいけないということです。事前に助けていただきありがとうございます

  • 答えて

    1

    この種のロジックは、テンプレートではなく、より適切に表示されます。これらのオブジェクトをビューで非常に簡単にフィルタリングし、その条件を満たすオブジェクトのみをコンテキスト内の名前付き値として渡すことができます。私はあなたにいくつかのコードを教えてくれるだろうが、あなたはどのデータを扱っているのか分からない。

    2

    あなたのテンプレートでこれをやろうとしている最悪の戦いに挑戦しています:解決策に最も近いのはregroup tagですが、それはあなたが探しているアイテムを頼りにしているわけではありませんグループ化された属性で最初にソートされます。あなたのビューで

    は、おそらくこのような何かしたい:

    grouped = {} 
    for obj in object_list: 
        grouped.setdefault(obj.attr1, {}).setdefault(obj.attr2, []).append(obj) 
    

    をこれは、あなたのキーがattr1の値であり、値が項目のリストにattr2の値から辞書マッピングされている辞書を与える必要がありますそれらの属性を持つ。

    関連する問題