2012-01-26 6 views
1

私はDjangoに比較的新しく、ちょうど壁にぶつかりましたが、これはあなたがベテランのためにケーキウォークになると確信しています。テンプレートのテーブルに表示しているアイテムのリストがあります。それは私のビュー内のオブジェクト(値のリスト)を作成してテンプレートに送信し、テーブルをレンダリングしても問題ありません。しかし、テンプレートにcount()の束がリンクとして表示され、クリックすると表示される項目のリストがさらにフィルタリングされることを示したいと思います。たとえば、リストに25〜50ドルのアイテムが含まれている場合、そのリンクには、その条件に一致する20アイテムがあることが示されます。でリンクが選択されると、url.pyにリクエストを送信し、クエリーセットをさらにフィルタリングし、テンプレートを再びレンダリングするビューを実行します。異なるデータをビューからテンプレートに渡すにはどうすればよいですか?

テンプレートにcount()情報を取得するにはどうすればよいですか?私は2つの別々のリスト(オブジェクト)をテンプレートに送ることはできないと思います(少なくとも私はまだどれくらいのことが分かりません)。私はビューでカウントを取得し、何らかの形で私のリストオブジェクトにそれらを追加する必要があると思うが、私はそれを行う方法とも、テンプレート内のそれらの値を解析する方法はかなりわからない。私は、リストオブジェクトから生成されたテーブルとカウントを別々に表示したいと思っています。私は今、うまく動作しているテーブルを台無しにするつもりです。

私はこの問題に対処する方法についてのご意見をお待ちしております。私はまだ幾分Python/Djangoコードが挑戦されているので、コード例を本当に感謝しています。

答えて

3

テンプレートには、好きなだけ多くのリストやオブジェクトを送信できます。テンプレートコンテキストは単なる辞書であり、必要に応じて項目を追加することができます。

context = { 
    'list1': my_first_list, 
    'list2': my_second_list, 
    ... 
} 
+0

感謝を含んでいる何かをシンプル{{obj.related_set.count}}を置き換えます。 – BillB1951

0

要件が不明です。コードが役立ちます。また、文を終わらせる期間が助けになります。

私はビューでカウントを取得し、何とか私のリストオブジェクトのテンプレート内でこれらの値を解析する方法を

にそれらを追加する必要があると思います。

ここにアプローチがあります。集約関数は使用しません。彼らはより効率的ですが、少し理解しにくいです。カウント数を確認するために、フォームに

object_list = Model.objects.filter(some_attribute=some_value) 

あなたがこれを行う:https://docs.djangoproject.com/en/1.3/topics/db/aggregation/

はあなたのビューでこのような何かを持っています。

{% for obj in object_list %} 
    <tr><td>{{obj.name}}</td> <td>{{obj.related_set.count}}</td><tr> 
{% endfor %} 

これはobj.related_set.count()を評価します。それは最も効率的ではありません(集約はより効率的です)。しかし、それは簡単です。

リンクをしたい場合は、ダニエルが、それは私が探していたものであるリンク

<a href="{% url "some.view.function" obj.id %}">{{obj.related_set.count}}</a> 
+0

ありがとうございます。私はこれを検討していましたが、データセットが潜在的にかなり大きいので、効率が懸念されていました。私は多数のカウントを取得しています。 – BillB1951

+0

は「効率を心配しています」。決して "心配しないでください"。常に測定してください。そして。集約を使用している場合は、Djangoで集約クエリを調べます。 –

関連する問題