How can I check the size of a collection within a Django template?

I have a list in my Django template. I want to do something only if the size of the list is greater than zero.

I have tried myList|length and myList|length_is but they have not been successful.

I've searched all over and don't see any examples. How can I check this?


Solution 1:

See https://docs.djangoproject.com/en/stable/ref/templates/builtins/#if : just use, to reproduce their example:

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

Solution 2:

If you're using a recent Django, changelist 9530 introduced an {% empty %} block, allowing you to write

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

Useful when the something that you want to do involves special treatment for lists that might be empty.

Solution 3:

A list is considered to be False if it has no elements, so you can do something like this:

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

Solution 4:

If you tried myList|length and myList|length_is and its not getting desired results, then you should use myList.count

Solution 5:

You can try with:

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