覆盖Django 1.6中的ModelForm字段错误消息

时间:2014-02-12 22:03:08

标签: django django-forms

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有一种更简单的方法来覆盖字段错误消息。一世   尚未有时间实施它,但你应该随意看看   它并使用它!

这已被证明是一个令人难以置信的难以查找的主题,我希望能节省其他人的时间。完成它的简单方法是什么?

1 个答案:

答案 0 :(得分:2)

来自Django 1.6 release notes

  

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."),
            },
        }

相关:Django's ModelForm - where is the list of Meta options?