我正在尝试自定义当用户输入的文本长于模型中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的默认消息。我做错了什么或者是否应该以其他方式定制此文本?
答案 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.'