0

Python Django は初めてです。

次のように、category_id の降順で並べられた django コレクション オブジェクトがあります。

category_id         name
1               apple
1               orange
2               car
2               bus
2               truck
3               ifosys
3               wipro

要素内の各カテゴリ アイテムを配置するにはどうすればよいですか<ul></ul>

期待される結果、

<h4>From catgeory 1</h4>
<ul>
    <li>apple</li>
    <li>orange</li>
</ul>
<h4>From catgeory 2</h4>
<ul>
    <li>car</li>
    <li>bus</li>
    <li>truck</li>
</ul>
<h4>From catgeory 3</h4>
<ul>
    <li>ifosys</li>
    <li>wipro</li>
</ul>

前もって感謝します

4

2 に答える 2

0

カテゴリ ID をキー、値を としてコンテキスト dict を作成しますlist

{
    '1': ["apple", "orange"],
    '2'" ["car", "bus"],
    ...
    ...
    '8': ["Foo", "Bar"],
}

そして、テンプレートでそれを繰り返します。テンプレートは、いくつかの単純な反復とフィルターを使用してデータをレンダリングするだけです。オブジェクトのビルドや解析でテンプレートに負担をかけるべきではありません。

于 2013-07-03T07:02:06.913 に答える
0

質問を正しく理解していれば、Django オブジェクトのコレクションとは QuerySet を意味します。次に、既に述べたように、オブジェクトを category_id でグループ化する必要があります。簡単な方法は、クエリセットを反復処理して、views.py で辞書を作成することです。

grouped_objects = {}
for obj in obj_collection:
    if obj.category_id in grouped_objects.keys():
        grouped_objects[obj.category_id].append(obj)
    else:
        grouped_objects[obj.category_id] = [obj]

これで、grouped_objects dict をテンプレートで処理する準備が整いました。それがあなたのコンテキスト全体になるとは思わないので、通常の変数として渡してください。次に、基本的な反復タグのみを使用する必要があります。

{% for category, object_list in grouped_objects.items %}
    <h4>From category {{category}}</h4>
    <ul>
    {% for obj in object_list %}
        <li>{{ obj.name }}</li>
    {% endfor %}
    </ul>
{% endfor %}

幸運を!

于 2013-07-03T07:56:22.997 に答える