Django - 形成Clean()和字段错误

时间:2012-04-01 21:30:09

标签: django validation django-forms django-validation

我正在尝试在表单clean()中设置字段错误,我现在正在做:

self._errors['address'] = self._errors.get('address', ErrorList())
self._errors['address'].append(_(u'Please specify an address.'))

有没有更好的,如果可能的更短的方法来做到这一点?

3 个答案:

答案 0 :(得分:14)

Django 1.7中的新功能是Form.add_error( field, message )

https://docs.djangoproject.com/en/dev/ref/forms/api/#django.forms.Form.add_error

答案 1 :(得分:7)

也许这会对你有所帮助。通常首选你覆盖干净,你可以在函数内部执行以下操作

如果您想提出特定于表单的错误,可以这样做。

self._errors["field"] = ErrorList([u"Error"])

这是确保你得到错误类

如果您有非字段错误,则可以简单地引发验证错误,如此

raise forms.ValidationError(_("Error"))

希望这会有所帮助。

答案 2 :(得分:6)

  1. 标准方式为raise ValidationError(message)
  2. 在您的案例中,将特定于字段的验证移至clean_<fieldname>()方法,clean_address。在此方法中引发的ValidationError会将错误消息附加到特定字段。从clean()筹集的一个人将归功于模型。