Après mon form.Form
valide les valeurs saisies par l'utilisateur. Je les transmets à un processus distinct (externe) pour un traitement ultérieur. Ce processus externe peut potentiellement trouver d'autres erreurs dans les valeurs.
Existe-t-il un moyen d'injecter ces erreurs dans le formulaire déjà validé afin qu'elles puissent être affichées via les méthodes habituelles d'affichage des erreurs de formulaire (ou existe-t-il de meilleures approches alternatives)?
Une suggestion a été d'inclure le traitement externe dans la validation du formulaire, ce qui n'est pas idéal car le processus externe fait bien plus que simplement valider.
Form._errors
peut être traité comme un dictionnaire standard. Il est considéré comme une bonne forme d'utiliser la classe ErrorList
et d'ajouter des erreurs à la liste existante:
from Django.forms.utils import ErrorList
errors = form._errors.setdefault("myfield", ErrorList())
errors.append(u"My error here")
Et si vous souhaitez ajouter des erreurs non liées à un champ, utilisez Django.forms.forms.NON_FIELD_ERRORS
(par défaut à "__all__"
) au lieu de "myfield"
.
Pour Django 1.7+, vous devez utiliser form.add_error()
au lieu d'accéder à form._errors
directement.
Documentation: https://docs.djangoproject.com/en/stable/ref/forms/api/#Django.forms.Form.add_error
Vous pouvez ajouter des détails d'erreur supplémentaires à l'attribut _errors
Du formulaire directement:
https://docs.djangoproject.com/en/1.5/ref/forms/validation/#described-laterhttps://docs.djangoproject.com/en/1.6/ref/forms/validation/# modifying-field-errors