我知道在使用普通的Django Forms时如何设置自己的自定义错误消息。但是基于现有模型的Django Form呢?考虑以下模型和形式:
Class MyModel(models.Model):
name = models.CharField(max_length='30')
Class MyForm(forms.ModelForm):
Class Meta:
model = MyModel
如果我创建此类表单并尝试发布,则会显示消息“此字段是必填项”。但是如何改变呢?当然,我可以这样做:
Class MyForm(forms.ModelForm):
model = forms.CharField(error_messages = {'required': "something..."})
Class Meta:
model = MyModel
但根据文档,不会保留max_length属性,我必须将其显式写入表单定义。我认为Model Forms的目的是避免两次编写相同的代码。因此,必须有一些简单的方法来更改自定义错误消息,而无需重写整个表单。基本上,如果我的消息看起来像“字段'名称'是必需的”,那对我来说就足够了。
请帮忙。
答案 0 :(得分:33)
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)}
答案 1 :(得分:0)
您可以在__init__
方法中更改运行时的字段属性。