Django 1.4 - 使用元字段Model = User向表单中的用户字段添加自定义错误消息

时间:2012-04-21 17:40:10

标签: django validation django-forms metaclass custom-errors

我试图将一些自定义错误消息添加到这样的表单中:

class RegistrationForm(forms.ModelForm):

    class Meta:
        model = User  
        fields = ('email',)

    extra_field = forms.CharField(error_messages={
        'required':'Este campo es requerido'
    })     

将自定义错误消息添加到表单(extra_field)中声明的字段时没有问题,但是我无法将自定义错误消息添加到从模型User继承的字段中通过meta课程(email)。

我真正想要的是自定义此表单的所有错误消息。另外,我想用西班牙语展示它们,而不是英语。

到目前为止,我还没有找到任何关于如何自定义从模型User继承的表单字段的文档,我真的不想因为错误消息而编写新表单。

提前致谢!!!

PD:我在debian挤压盒中使用Django 1.4和python 2.6.6。

3 个答案:

答案 0 :(得分:1)

好的伙计们,谢谢大家的答案,事实上你帮助了我很多!!!

我解决了这个问题:

Suposse我有这样的表格:

class RegistrationForm(forms.ModelForm):

  class Meta:
    model = User  
    fields = ('username', 'email')

我想在用户名字段中添加自定义错误消息,但我不想放弃该字段已经存在的所有验证。

我将此方法添加到我的RegistrationForm类:

def clean_username(self):
    data = self.cleaned_data

    # My extremely important validation.
    if len(data['username']) == 5:

      self.fields['username'].error_messages["myerror"] = "The important message"
      raise forms.ValidationError(self.fields['username'].error_messages["myerror"])

    return data['username']

这种方法的优点是我不会遗漏已经涉及的字段的其他验证检查。

这很重要,因为现在我不必验证用户已存在于我的数据库中。

感谢您的回复,祝您有个美好的一天!

答案 1 :(得分:0)

启用settings.py

中的内部化
USE_I18N = True
LANGUAGE_CODE = 'es'

模型User与其他模型没有区别。用你的代码来弄清楚问题。 在您的元类中,fields = ('email')必须是元组或列表,即fields = ('email', )

答案 2 :(得分:0)

您可以通过简单地重新定义它们来覆盖任何继承的字段,方法与定义额外字段的方式完全相同。