Django,模型和表单:替换"此字段是必填的"消息

tob*_*bik 14 forms django

我知道如何在使用普通的Django Forms时设置自己的自定义错误消息.但是基于现有模型的Django Form呢?考虑以下模型和形式:

Class MyModel(models.Model):
    name = models.CharField(max_length='30')

Class MyForm(forms.ModelForm):
    Class Meta:
        model = MyModel
Run Code Online (Sandbox Code Playgroud)

如果我创建此类表单并尝试发布,则会显示消息"此字段是必填的".但是如何改变呢?当然我可以这样做:

Class MyForm(forms.ModelForm):
    model = forms.CharField(error_messages = {'required': "something..."})
    Class Meta:
        model = MyModel
Run Code Online (Sandbox Code Playgroud)

但根据文档,不会保留max_length属性,我必须将其显式写入表单定义.我认为Model Forms的目的是避免两次编写相同的代码.因此,必须有一些简单的方法来更改自定义错误消息,而无需重写整个表单.基本上,如果我的消息看起来像"字段'名称'是必需的",那对我来说就足够了.

请帮忙.

Yuj*_*ita 34

class MyForm(forms.ModelForm):
    class Meta:
            model = MyModel

    def __init__(self, *args, **kwargs):
        super(MyForm, self).__init__(*args, **kwargs)
        self.fields['name'].error_messages = {'required': 'custom required message'}

        # if you want to do it to all of them
        for field in self.fields.values():
            field.error_messages = {'required':'The field {fieldname} is required'.format(
                fieldname=field.label)}
Run Code Online (Sandbox Code Playgroud)

  • @Dan是的,我得到了那个神秘的KeyError.行`field.error_messages ['required'] ='字段{fieldname}是必需的'.format(fieldname = field.label)`我认为会更好. (3认同)
  • 请注意,如果您收到"invalid"错误并且"不知道",您将会收到[一个神秘的"KeyError"](http://stackoverflow.com/questions/7463159/django-form-is-valid-keeps-throwing-keyerror)为它提供信息. (2认同)
  • 对我不起作用,它仍然出现“请填写此字段”:( (2认同)