hjwp的精彩Test-Driven Development with Python book演示了chapter 11中覆盖默认的ModelForm字段错误消息:
from django import forms
from lists.models import Item
class ItemForm(forms.models.ModelForm):
class Meta:
[...]
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
empty_error = "You can't have an empty list item"
self.fields['text'].error_messages['required'] = empty_error
然后宣布(这是一项正在进行中的工作)......
Django 1.6有一种更简单的方法来覆盖字段错误消息。一世 尚未有时间实施它,但你应该随意看看 它并使用它!
这已被证明是一个令人难以置信的难以查找的主题,我希望能节省其他人的时间。完成它的简单方法是什么?
答案 0 :(得分:2)
ModelForm接受几个新的Meta选项。
- localized_fields列表中包含的字段将被本地化(通过在表单字段上设置localize)。
- 标签,help_texts和error_messages选项可用于自定义默认字段,有关详细信息,请参阅Overriding the default fields。
从那起:
class AuthorForm(ModelForm):
class Meta:
model = Author
fields = ('name', 'title', 'birth_date')
labels = {
'name': _('Writer'),
}
help_texts = {
'name': _('Some useful help text.'),
}
error_messages = {
'name': {
'max_length': _("This writer's name is too long."),
},
}