Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django:如何覆盖默认错误消息?_Django_Django Models_Django Forms - Fatal编程技术网

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

Django:如何覆盖默认错误消息?,django,django-models,django-forms,Django,Django Models,Django Forms,我正在尝试自定义此字段是必需的错误消息,但它无法按预期工作 首先,我尝试创建自定义验证器 validators.py def required_field(input): if input is None or input == '': raise ValidationError("Custom error message") a_field = models.TextField(validators=[required_field]) def clean(self)

我正在尝试自定义
此字段是必需的
错误消息,但它无法按预期工作

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

validators.py

def required_field(input):
    if input is None or input == '':
        raise ValidationError("Custom error message")
a_field = models.TextField(validators=[required_field])
def clean(self):
    if not self.a_field:
        raise ValidationError({'a_field': 'Custom Error Message'})
models.py

def required_field(input):
    if input is None or input == '':
        raise ValidationError("Custom error message")
a_field = models.TextField(validators=[required_field])
def clean(self):
    if not self.a_field:
        raise ValidationError({'a_field': 'Custom Error Message'})
但是,验证程序不工作,默认错误消息
此字段是必需的。
显示

其次,我重写了
clean
方法

models.py

def required_field(input):
    if input is None or input == '':
        raise ValidationError("Custom error message")
a_field = models.TextField(validators=[required_field])
def clean(self):
    if not self.a_field:
        raise ValidationError({'a_field': 'Custom Error Message'})
显示错误消息,但后面跟着默认错误消息。 如何直接覆盖它

我用的是
crispy\u表单
btw

html

{{ form|crispy }}

您需要在表单的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'}

您需要在表单的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'}