次のようなリストを生成しようとしています。
<ul>
<li>Parent 1
<ul>
<li>Child 1</li>
<li>Child 2</li>
<li class="last">Child 3</li>
</ul>
</li>
<li>Parent 2
<ul>
<li>Child 1</li>
<li>Child 2</li>
<li class="last">Child 3</li>
</ul>
</li>
<li class="last">Parent 3
<ul>
<li>Child 1</li>
<li>Child 2</li>
<li class="last">Child 3</li>
</ul>
</li>
</ul>
私はもともとやった:
<ul>
{% recursetree mytree %}
<li class="{% if not node.get_next_sibling %}last{% endif %}">
{{ node }}
{% if not node.is_leaf_node %}
<ul>
{{ children }}
</ul>
{% endif %}
</li>
</ul>
ただし、 を呼び出すと、node.get_next_sibling
アイテムごとに追加のクエリが発生します。明らかに、それは理想的ではありません。だから私は最後の項目を決定するためにtree_info
andを使用しようとしました:structure.closed_levels
{% for node,structure in mytree|tree_info %}
{% if structure.new_level %}<ul><li>{% else %}</li><li>{% endif %}
<li class="{% if structure.closed_levels|length > 0 %}last{% endif %}">
{{ node }}
{% for level in structure.closed_levels %}</li></ul>{% endfor %}
{% endfor %}
これはうまく機能しますが、最後のルート レベルのアイテムstructure.closed_levels
は常に空のリストであるため、「最後の」クラスを取得しません。(実際には子アイテムに対してのみ機能します)。
同様のことを達成する必要があるのは私が最初ではないので、ここの誰かがすでに解決策を持っていることを願っています.