2010-03-17 4 views
14

Dans mon modèle, je souhaite parcourir toutes les erreurs de formulaire, y compris celles qui n'appartiennent PAS à un champ spécifique. (Ce qui signifie que pour form.errors, il devrait également afficher pour __all__ erreurs aswell)Django, boucle sur toutes les erreurs de formulaire

J'ai essayé plusieurs versions, à savoir:

<div id="msg"> 
    {% if form.errors %} 
    <div class="error"> 
    <p><span>ERROR</span></p> 
    <ul> 
    {% for key,value in form.errors %} 
    {% for error in value %} 
    <li>{{ error }}</li> 
    {% endfor %} 
    {% endfor %} 
    </ul> 
    </div> 
    {% endif %} 
</div> 

toujours pas atteinte, je serai pour toute suggestion greatful.

Répondre

27

Les erreurs de formulaire dans Django sont implémentées en tant qu'instance ErrorDict (qui est juste une sous-classe de dict avec des extras). Essayez un léger ajustement à votre modèle pour la syntaxe de la boucle:

{% for key, value in form.errors.items %} 
14

Êtes-vous, par hasard, à la recherche de form.non_field_errors? C'est ainsi que vous auriez accès aux erreurs qui ne sont pas associées à un champ particulier.

{% if form.non_field_errors %} 
<ul> 
    {{ form.non_field_errors.as_ul }} 
</ul> 
{% endif %} 

Vérifiez également le forms.py test suite pour un autre exemple. Rechercher form.non_field_errors

+1

Merci d'avoir montré form.non_field_errors! – Hellnar

Questions connexes