Ooto
Ooto

Reputation: 1247

Django: How to override default error message?

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

Answers (1)

Jibin Mathews
Jibin Mathews

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

Related Questions