13

我正在尝试以 clean() 形式设置字段错误,我目前正在做:

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

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

4

3 回答 3

14

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

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

于 2014-10-28T23:44:03.963 回答
8

也许这会对你有所帮助。它通常首选您覆盖 clean 并且在函数内部您可以执行以下操作

如果你想提出特定的错误,你可以这样做。

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

这是确保你得到错误类

如果您有一个非字段错误,您可以像这样简单地引发一个验证错误

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

希望这可以帮助。

于 2013-03-28T09:58:08.373 回答
6
  1. 标准方式是raise ValidationError(message).
  2. 在您的情况下 ,将特定于字段的验证移至clean_<fieldname>()方法。在这种方法中引发的错误消息将附加到特定字段。一般而言,从模型中提出的一个将归因于模型。clean_addressValidationErrorclean()
于 2012-04-01T21:54:45.533 回答