update - tipos de formularios en django
¿Inyectar errores en un formulario ya validado? (3)
Después de mi form.Form
valida los valores de entrada del usuario. Los paso a un proceso separado (externo) para su posterior procesamiento. Este proceso externo puede potencialmente encontrar más errores en los valores.
¿Hay alguna forma de insertar estos errores en el formulario ya validado para que puedan mostrarse a través de los métodos usuales de visualización de errores de formulario (o hay mejores enfoques alternativos)?
Una sugerencia fue incluir el procesamiento externo en la validación del formulario, que no es ideal porque el proceso externo hace mucho más que simplemente validar.
Para Django 1.7+, debe usar form.add_error()
lugar de acceder a form._errors
directamente.
Documentación: https://docs.djangoproject.com/en/stable/ref/forms/api/#django.forms.Form.add_error
Puede agregar detalles de error adicionales al atributo _errors
del _errors
directamente:
https://docs.djangoproject.com/en/1.5/ref/forms/validation/#described-later https://docs.djangoproject.com/en/1.6/ref/forms/validation/#modifying-field-errors
Form._errors
se puede tratar como un diccionario estándar. Se considera buena forma de utilizar la clase ErrorList
y de agregar errores a la lista existente:
from django.forms.util import ErrorList
errors = form._errors.setdefault("myfield", ErrorList())
errors.append(u"My error here")
Y si desea agregar errores que no sean de campo, use django.forms.forms.NON_FIELD_ERRORS
(por defecto es "__all__"
) en lugar de "myfield"
.