2012-01-08 8 views
1

私はDjangoテンプレートでregroupタグを使用して、顧客によってグループ化されたいくつかの項目をリストしています。私のモデルは次のとおりです。複数のモデルフィールドを使用してDjangoテンプレートのリストを再編成する

class Customer(models.Model): 
    name = models.CharField(max_length=25) 
    city = models.CharField(max_length=25) 

私は「名前、都市」としてそれらを注文することです、私が本当に欲しいもので、アイテムのcustomer.name(またはcustomer.city)を一覧表示することができます。ドキュメントによると、 "任意の有効なテンプレートルックアップは、メソッド、属性、辞書キー、リストアイテムを含むregroupタグの法的グループ化属性です。" [1]私はこのための方法をどのように定義するのですか?テンプレートから呼び出すにはどうしたらいいですか?

[1] https://docs.djangoproject.com/en/dev/ref/templates/builtins/

アップデート:私は再グループ化の機能を理解し、それを今使用していると、Iグループオブジェクトのフィールドのいずれかを使用してリスト。セパレータcustomer.grouperには、その特定のフィールドの名前が表示されます。私の場合は "customer.name"または "customer.city"です。私の目標は、「customer.name、customer.city」(「Microsoft、Redmond」など)のようにまとめて提示することです。ドキュメンテーションはこれを簡単に言及していますが、私はそれを理解することはできません。

お客様のモデルの一部として上記のような方法で問題を解決しました。しかし、テンプレートから呼び出す方法がわかりません。

+0

正確にここにほしいもののサンプルをもう少し詳しく説明してください。 –

+0

質問が更新されました。 – matpe

答えて

2

あなたのモデル関数は正しいですが、それは括弧の前に%が含まれている必要があります

def display_name(self): 
    return "%s, %s" %(self.name, self.city) 

あなたのビューはオブジェクトではなく値のリストを渡す必要があります。これはあなたの十分のために動作するはず

{% regroup tp by display_name as tp_list %} 

<ul> 
{% for t in tp_list %} 
    <li>{{ t.grouper }} 
    <ul> 
     {% for item in t.list %} 
      <...something of your code....> 
     {% endfor %} 
    </ul> 
    </li> 
{% endfor %} 
</ul> 

:あなたのテンプレートコードは次のようなものでなければなりませんので

は、リストはtpとします。

+0

ありがとうございます!それらの小さな詳細... – matpe

+0

私の喜び...:D –

関連する問題