Django:如何覆盖默认错误消息?

时间:2019-02-14 04:49:59

标签: django django-models django-forms

我正在尝试自定义This field is required错误消息,但是它无法按预期工作。

首先,我尝试创建自定义验证器。

validators.py

def required_field(input):
    if input is None or input == '':
        raise ValidationError("Custom error message")

models.py

a_field = models.TextField(validators=[required_field])

但是,验证器不起作用,并且显示默认错误消息This field is required.

第二,我覆盖了clean方法

models.py

def clean(self):
    if not self.a_field:
        raise ValidationError({'a_field': 'Custom Error Message'})

显示错误消息,但其后是默认错误消息。 如何直接覆盖它?

我正在使用crispy_form顺便说一句。

html

{{ form|crispy }}

1 个答案:

答案 0 :(得分:2)

您需要使用表单的init方法进行操作

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'}