0

我正在尝试自定义当用户输入的文本长度超过模型中 CharField 的最大长度时显示的错误消息。模型定义字段如下:

name = models.CharField(max_length=200)

我有一个用于该模型的 ModelForm,它定义了表单字段,如下所示:

name = forms.CharField(widget=forms.TextInput(attrs={'class':"span8", 'placeholder':'e.g. How do I setup a wi-fi network? How to sync my iPhone with iCloud?'}),
                            error_messages={'required': 'Please enter a question.', 'max_length': 'Your question is too long.'})

这对于 'required' 错误消息很有效,但 'max_length' 错误消息仍然使用 Django 的默认消息。我做错了什么还是应该以其他方式自定义此文本?

4

3 回答 3

3

'max_length'进行检查'django.core.validators.MaxLengthValidator',其中包含硬编码的错误消息。您可以通过以下方式将其替换为您自己的版本:

# after the name or ModelForm definition
name.validators[-1].message = 'Your question is too long.'
于 2012-05-02T16:26:32.723 回答
3

我不确定它从哪个版本开始工作,但现在你可以这样做:

class YouForm(forms.ModelForm):

     def __init__(self, *args, **kwargs):
         self.fields['you_field'].error_messages = {'max_length': 'Ensure this value has at most %(limit_value)d character (it has %(show_value)d).'}
于 2016-06-18T15:25:38.607 回答
0

您可以创建子类'django.core.validators.MaxLengthValidator'

from django.core.validators import MaxValueValidator

class MyValidator(MaxValueValidator):
    message = 'Your question is too long.'
于 2016-07-16T20:33:59.443 回答