J'ai une liste dans mon Django modèle. Je veux faire quelque chose que si la taille de la liste est supérieure à zéro.
J'ai essayé myList|length
et myList|length_is
mais ils n'ont pas réussi.
J'ai cherché partout et je ne vois aucun exemple. Comment puis-je vérifier cela?
Voir https://docs.djangoproject.com/fr/stable/ref/templates/builtins/#if : il suffit d'utiliser, pour reproduire leur exemple:
{% if athlete_list %}
Number of athletes: {{ athlete_list|length }}
{% else %}
No athletes.
{% endif %}
Si vous utilisez un Django récent, liste des modifications 95 a introduit un bloc {% empty%}, vous permettant d'écrire
{% for athlete in athlete_list %}
...
{% empty %}
No athletes
{% endfor %}
Utile lorsque quelque chose que vous voulez faire implique de parcourir une liste non vide.
Une liste est considérée comme False
si elle ne contient aucun élément, vous pouvez donc faire quelque chose comme ceci:
{% if mylist %}
<p>I have a list!</p>
{% else %}
<p>I don't have a list!</p>
{% endif %}
Si vous avez essayé myList | length et myList | length_is sans obtenir les résultats souhaités, vous devez utiliser myList.count
Vous pouvez essayer avec:
{% if theList.object_list.count > 0 %}
blah, blah...
{% else %}
blah, blah....
{% endif %}
Collection.count sans support
{% if request.user.is_authenticated %}
{{wishlists.count}}
{% else %}0{% endif %}
J'ai besoin de la longueur de la collection pour décider si je dois ou non rendre la table <thead></thead>
mais je ne sais pas pourquoi @ Django 2.1.7 la réponse choisie échouera (vide) mon forloop
après.
Je dois utiliser {% if forloop.first %} {% endif %}
surpasser:
<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>