2

我正在尝试覆盖 ModelForm 中字段的“唯一”错误消息。我正在尝试遵循 Django 1.6 的文档,但我无法让它工作。很简单的东西,我有:

模型.py:

class EmailAddress(Model):
    """An email address."""
    address = EmailField(unique=True)

    def __unicode__(self):
        return self.address

视图.py:

class EmailAddressForm(ModelForm):
    class Meta:
        model = EmailAddress
        fields = {'address'}
        error_messages = {
            'address': {
                u'unique': _('That address has already been added.'),
            }
        }

如果我输入重复的电子邮件,我会得到:

emailaddress_form.errors = {'address': [u'Email address with this Address already exists.']}.`

我已经在源代码中进行了挖掘,据我所知,我正在将error_messagesdict 正确传递到django.forms.models.fields_for_modelMetaclass 调用的函数将接收它的位置。希望我遗漏了一些明显的东西。有什么建议么?

4

2 回答 2

1

尝试这个 :-

将地址字段更改为:-

address = models.EmailField(unique=True, error_messages={'unique':"那个地址已经被添加了。"})

于 2014-02-25T10:16:37.857 回答
0

在 EmailAddressForm 类上创建一个方法“clean_address”,希望这能解决您的问题。

def clean_address(self):
  """Prevent duplicate email addresses."""
  if 'email' in self.changed_data:
      if self.Meta.model.all().filter('address =', self.cleaned_data['address']).count():
        raise forms.ValidationError('Email address with this Address already exists.: %s.' %
                                     self.cleaned_data['address'])
  return self.cleaned_data['address']
于 2014-02-25T07:24:42.313 回答