首页 文章

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

提问于
浏览
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.'})

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

3 回答

  • 3

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

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

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

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

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

    from django.core.validators import MaxValueValidator
    
    class MyValidator(MaxValueValidator):
        message = 'Your question is too long.'
    

相关问题