Django: Ajouter non_field_error de vue?
J'ai un Django forme avec un tas de champs que je suis rendu dans le modèle. J'ai aussi certains droits d'entrée HTML des éléments que je veux valider dans la vue en accédant à la request.POST
vars. Si ceux-ci ne valide pas, je veux injecter une erreur dans le Django formulaire afin que je puisse l'afficher sur la page. Est-il un moyen de le faire?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez également utiliser assez élégant add_error() méthode. Les œuvres de Django >= 1.7.
Si vous définissez
field
commeNone
formulaire de traiter l'erreur "non_field" un.Donc:
form.add_error(None, "I'm non-field error")
fonctionne comme un charme.
L'ajout de Daniel réponse, la syntaxe est:
Notez que vous pouvez remplacer
'__all__'
avec la constanteNON_FIELD_ERRORS
pour une meilleure compatibilité (crédit grafa).Bien, vous pouvez insérer n'importe quoi dans le formulaire de
errors
dictionnaire, et non le champ des erreurs d'aller danserrors['__all__']
.Mais pourquoi êtes-vous garder certains champs de l'Django forme, uniquement pour leurs erreurs à la fin? Pourquoi ne pas mettre tous les champs dans le formulaire, en premier lieu? Si c'est juste que vous êtes à l'aide d'un modelform et vous souhaitez ajouter des champs, vous pouvez le faire dans Django par le simple fait de déclarer les champs au niveau du formulaire, puis vous pouvez définir le propre de méthodes à l'intérieur de la forme.