Django - 更改CharField TextInput上的max_length错误消息

时间:2012-05-02 16:10:16

标签: django django-forms

我正在尝试自定义当用户输入的文本长于模型中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.'})

这适用于“必需”错误消息,但“max_length”错误消息仍然在此处使用Django的默认消息。我做错了什么或者是否应该以其他方式定制此文本?

3 个答案:

答案 0 :(得分:3)

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

# after the name or ModelForm definition
name.validators[-1].message = 'Your question is too long.'

答案 1 :(得分:1)

我不确定它的工作版本,但现在你可以这样做了:

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

答案 2 :(得分:0)

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

的子类
from django.core.validators import MaxValueValidator

class MyValidator(MaxValueValidator):
    message = 'Your question is too long.'