Injecter des erreurs dans un formulaire déjà validé?

Une fois mon form.Form valide les valeurs de saisie de l’utilisateur, je les transmets à un processus séparé (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é pour qu’elles puissent être affichées via les méthodes habituelles d’affichage des erreurs de forme (ou existe-t-il de meilleures approches alternatives)?

L’une des suggestions était d’inclure le traitement externe dans la validation du formulaire, ce qui n’est pas idéal car le processus externe fait beaucoup plus que simplement valider.

Form._errors peut être traité comme un dictionnaire standard. L’utilisation de la classe ErrorList est considérée comme bonne et pour append des erreurs à la liste existante:

 from django.forms.util import ErrorList errors = form._errors.setdefault("myfield", ErrorList()) errors.append(u"My error here") 

Et si vous voulez append des erreurs de non-champs, utilisez django.forms.forms.NON_FIELD_ERRORS (la valeur par défaut est "__all__" ) au lieu de "myfield" .

Pour Django 1.7+, vous devez utiliser form.add_error() au lieu d’accéder directement à form._errors .

Documentation: https://docs.djangoproject.com/en/stable/ref/forms/api/#django.forms.Form.add_error

Vous pouvez append des détails d’erreur supplémentaires à l’atsortingbut _errors du _errors directement:

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