6

簡単な質問:Djangoテンプレート言語のリストからアイテムを削除する方法はありますか?

あるリストを繰り返し処理し、別のリストの最初の項目を印刷している状況があります。最初のアイテムが印刷されたら、そのリストから削除したいと思います。

下記参照:

{% for item in list1 %}
     {{list2.0}}
     #remove list2.0 from list2
{% endfor %}

前もって感謝します。

4

4 に答える 4

8

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}}が必要であることに注意してください。

于 2012-08-24T17:58:34.507 に答える
2

可能であれば、ビュー内のアイテムを除外しようとします。それ以外の場合は、forループ内にifまたはifnotステートメントを追加できます。

{% for item in list%}
    {% if item.name != "filterme" %}
        {{ item.name }}
    {% endif %}
{% endfor %}
于 2012-08-24T17:34:52.093 に答える
0

アイテムを削除することはできませんが、特定のアイテムがなくても(一定のインデックスで)リストを取得できます

{% with list2|slice:"1:" as list2 %}
...
{% endwith %}

もちろん、ネスティングルールなどが適用されます。

一般的に、複雑なデータ構造操作を行っていることに気づきました。Pythonに移動するだけです。より高速でクリーンになります。

于 2012-08-24T17:42:55.487 に答える
0

そのような組み込みのテンプレートタグはありません。空でない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 %}

これは、テンプレート内のリストのコンテンツを操作することはお勧めできません。

于 2012-08-24T17:45:20.357 に答える