Tengo un formset en línea para un modelo, que tiene una restricción unique_together. Y así, cuando los datos de entrada, que no cumple esta limitación, se muestra:Django: Mostrar correctamente los errores de formset
__all__Please correct the duplicate values below.
El código, que hace esto es:
{% for error in formset.errors %}
{{ error }}<br/>
{% endfor %}
No me importa mucho como el __all__
al principio del error y es muy claramente la clave de diccionario, así que he intentado:
{% for key, error in formset.errors %}
{{ key }}: {{ error }}<br/>
{% endfor %}
Pero entonces todo lo que consigo es:
__all__:
{{error}} no se mostrará en absoluto. Entonces, ¿qué está pasando aquí? ¿Y cómo visualizo el error correctamente?
Gracias :) útil. Tu manera no funcionó, pero finalmente funcionó con una pequeña modificación (errors.values en lugar de errores), por lo que ahora se ve así: {% for dict in formset.errors%} {% for error en dict.values%} {{error}} {% endfor%} {% endfor%} –
Me alegro de poder ayudar. He actualizado mi respuesta en base a sus comentarios. Parece que el problema clave que estaba estropeando antes era que 'formset.errors' es una lista de dicts, ni una sola dict. –
Para la versión actual de django, el bucle de errores en las plantillas generalmente no es lo que desea. Dado que OP preguntó al final "... ¿cómo puedo mostrar el error correctamente?", Me referiría a las otras respuestas que no implican el bucle de errores. – dsalaj