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

RS7*_*RS7 13 django validation django-forms django-validation

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

self._errors['address'] = self._errors.get('address', ErrorList())
self._errors['address'].append(_(u'Please specify an address.'))
Run Code Online (Sandbox Code Playgroud)

这样做有更好的,如果可能的更短的方法吗?

Man*_*Dee 14

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

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


Kir*_*h R 7

也许这会对你有所帮助.通常首选你覆盖清洁和功能内部,您可以执行以下操作

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

self._errors["field"] = ErrorList([u"Error"])
Run Code Online (Sandbox Code Playgroud)

这是确保你得到错误类

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

raise forms.ValidationError(_("Error"))
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.


Ale*_*dev 6

  1. 标准方式是raise ValidationError(message).
  2. 在您的情况下clean_<fieldname>(),将特定于字段的验证移动到方法clean_address. ValidationError在这种方法中引发会将错误消息附加到特定字段.从中提出的一个clean()将归功于模型.