Je sais comment définir mes propres messages d'erreur personnalisés lors de l'utilisation de formulaires Django ordinaires. Mais qu'en est-il de Django Form basé sur un modèle existant? Considérez modèle suivant et forme:Django, Models & Forms: remplacer le message "Ce champ est obligatoire"
Class MyModel(models.Model):
name = models.CharField(max_length='30')
Class MyForm(forms.ModelForm):
Class Meta:
model = MyModel
Si je crée la forme et essayer de l'afficher, le message « Ce champ est obligatoire » apparaît. Mais comment le changer? Bien sûr que je pouvais faire quelque chose comme ceci:
Class MyForm(forms.ModelForm):
model = forms.CharField(error_messages = {'required': "something..."})
Class Meta:
model = MyModel
Mais selon la documentation, attribut max_length ne sera pas préservé et je dois l'écrire explicitement à la définition du formulaire. Je pensais que le but de Model Forms est d'éviter d'écrire deux fois le même code. Il doit donc y avoir un moyen simple de modifier le message d'erreur personnalisé sans réécrire le formulaire entier. Fondamentalement, cela me suffirait si mon message ressemblait à quelque chose comme "Le nom du champ" est requis ".
Aidez-nous s'il vous plaît.
Merci, ça a l'air bien. Cependant j'ai eu l'impression que vous avez évité d'écrire deux fois le même code mais en écrivant un autre code qui est en fait plus long et plus laid;) Néanmoins, il épargnera du travail au moins sur les grandes formes, merci encore. – tobik
Je suppose à chacun son propre. Si vous avez besoin de remplacer tous les messages 'required', c'est de loin le plus propre. Je ne pense pas non plus que ce soit plus long, sauf si vous comptez l'appel __init__, que j'utilise généralement dans tout. –
Notez que vous obtiendrez [un mystérieux 'KeyError'] (http://stackoverflow.com/questions/7463159/django-form-is-valid-keeps-threading-keyerror) si vous obtenez une erreur' invalid' et ne Ne fournissez pas un message pour cela. –