Reputation: 1247
I'm trying to customize This field is required
error message but it doesn't work as expected.
First I tried to create custom validator.
validators.py
def required_field(input):
if input is None or input == '':
raise ValidationError("Custom error message")
and models.py
a_field = models.TextField(validators=[required_field])
However, the validator doesn't work and the default error message This field is required.
shows up.
Second, I override the clean
method
models.py
def clean(self):
if not self.a_field:
raise ValidationError({'a_field': 'Custom Error Message'})
The error message shows up but it is followed by default error message. How can I override it directly?
I'm using crispy_form
btw.
html
{{ form|crispy }}
Upvotes: 0
Views: 275
Reputation: 1135
You need to do it in the init method of the form
class MyForm(forms.ModelForm):
class Meta:
model = MyModel
def __init__(self, *args, **kwargs):
super(MyForm, self).__init__(*args, **kwargs)
self.fields['a_field '].error_messages = {'required': 'Custom Error Message'}
Upvotes: 2