web-dev-qa-db-ja.com

Djangoテンプレートリストの最初の要素

辞書を私のDjangoテンプレートに渡します、

辞書とテンプレートはこのようなものです-

lists[listid] = {'name': l.listname, 'docs': l.userdocs.order_by('-id')}

{% for k, v in lists.items %}
    <ul><li>Count: {{ v.docs.count }}, First: {{ v.docs|first }}</li></ul>
{% endfor %}

docsuserdocsタイプのリストです。つまり、インスタンスです。したがって、firstフィルターはこのインスタンスを返します。これからidを抽出する必要があります。それ、どうやったら出来るの?

私は試した {{ v.docs|first }}.idおよびその他のさまざまな無益な裁判。

23

{% with %}この種のもののテンプレートタグ。

{% with v.docs|first as first_doc %}{{ first_doc.id }}{% endwith %}
53
Daniel Roseman

あなたはこれを試すことができます:

{{ v.docs.0 }}

お気に入り arr.0

インデックス(012など)。

39
Abdul Majeed

これが役立つかどうかわかりません。

必要なのはイテラブル(v.docs)の最初の値であり、別のカプセル化イテラブル(リスト)を反復処理しています。

カウントについても、同じことを行いますが、最初の要素についてです。v.docsを個別に繰り返し、内部ループを介して最初の値を取得します。

{% for doc in v.docs %}
    {% if v.docs | first %}  
    <li>doc</li>
    {% endif %}
{% endfor %}

注:最初のフィルターはdocではなくv.docsに適用されます。うん。それは別のループを含みます:(

5
Johnson