簡単な質問:Djangoテンプレート言語のリストからアイテムを削除する方法はありますか?
あるリストを繰り返し処理し、別のリストの最初の項目を印刷している状況があります。最初のアイテムが印刷されたら、そのリストから削除したいと思います。
下記参照:
{% for item in list1 %}
{{list2.0}}
#remove list2.0 from list2
{% endfor %}
前もって感謝します。
簡単な質問:Djangoテンプレート言語のリストからアイテムを削除する方法はありますか?
あるリストを繰り返し処理し、別のリストの最初の項目を印刷している状況があります。最初のアイテムが印刷されたら、そのリストから削除したいと思います。
下記参照:
{% for item in list1 %}
{{list2.0}}
#remove list2.0 from list2
{% endfor %}
前もって感謝します。
list1とlist2が実際にリストであり、クエリセットではない場合、これは機能しているようです。
{{ list2 }} {# show list2 #}
{% for item in list1 %}
{{ list2.0 }}
{# remove list2.0 from list2 #}
{{ list2.pop.0 }}
{% endfor %}
{{ list2 }} {# empty #}
pop
この場合は返されないため、明示的に{{list2.0}}が必要であることに注意してください。
可能であれば、ビュー内のアイテムを除外しようとします。それ以外の場合は、forループ内にifまたはifnotステートメントを追加できます。
{% for item in list%}
{% if item.name != "filterme" %}
{{ item.name }}
{% endif %}
{% endfor %}
アイテムを削除することはできませんが、特定のアイテムがなくても(一定のインデックスで)リストを取得できます
{% with list2|slice:"1:" as list2 %}
...
{% endwith %}
もちろん、ネスティングルールなどが適用されます。
一般的に、複雑なデータ構造操作を行っていることに気づきました。Pythonに移動するだけです。より高速でクリーンになります。
そのような組み込みのテンプレートタグはありません。空でないlist2
場合の最初の項目を印刷したくないとのことですが。list1
試す:
{% for item in list1 %}
{{list2.0}}
...
{% endfor %}
{% for item in list2 %}
{% if list1 and forloop.counter == 1 %}
# probably pass
{% else %}
{{ item }}
{% endif %}
{% endfor %}
これは、テンプレート内のリストのコンテンツを操作することはお勧めできません。