web-dev-qa-db-ja.com

Djangoテンプレート内のコレクションのサイズを確認するにはどうすればよいですか?

Djangoテンプレートにリストがあります。リストのサイズがゼロより大きい場合にのみ、何かをしたいです。

myList|lengthmyList|length_isを試しましたが、成功していません。

私はすべてを検索しましたが、例は見当たりません。これを確認するにはどうすればよいですか?

125
MrDatabase

https://docs.djangoproject.com/en/stable/ref/templates/builtins/#if を参照してください。単に例を使用して、例を再現します。

{% if athlete_list %}
    Number of athletes: {{ athlete_list|length }}
{% else %}
    No athletes.
{% endif %}
238
Alex Martelli

最近のDjangoを使用している場合、 changelist 95 は{%empty%}ブロックを導入し、書き込みを許可します

{% for athlete in athlete_list %}
  ...
{% empty %}
  No athletes
{% endfor %}

行いたいことが空でないリストの繰り返しを伴う場合に役立ちます。

89
Dave W. Smith

リストに要素がない場合、リストはFalseと見なされるため、次のようなことができます。

{% if mylist %}
    <p>I have a list!</p>
{% else %}
    <p>I don't have a list!</p>
{% endif %}
20
mipadi

MyList | lengthとmyList | length_isを試しても、期待した結果が得られない場合は、myList.countを使用する必要があります

12
Nilesh Tighare

で試すことができます:

{% if theList.object_list.count > 0 %}
    blah, blah...
{% else %}
    blah, blah....
{% endif %} 
4
Atarx

Collection.countブラケットなし

{% if request.user.is_authenticated %}
{{wishlists.count}}
{% else %}0{% endif %}
1
lilhamad

テーブル<thead></thead>をレンダリングする必要があるかどうかを判断するには、コレクションの長さが必要です。

しかし、理由はわからない@ Django 2.1.7選択された答えは失敗します(空)my forloop後で。

私は{% if forloop.first %} {% endif %}を使用して克服しました:

<table>
    {% for record in service_list %}
        {% if forloop.first %}
            <thead>
            <tr>
                <th>日期</th>
            </tr>
            </thead>
        {% endif %}
        <tbody>
        <tr>
            <td>{{ record.date }}</td>
        </tr>
    {% endfor %}
    </tbody>
</table>
0
C.K.