Django - форма Clean () и поле ошибок - PullRequest
13 голосов
/ 02 апреля 2012

Я пытаюсь установить ошибки поля в форме clean (), и в настоящее время я делаю:

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

Есть ли лучший и, если возможно, более короткий метод для этого?

Ответы [ 3 ]

14 голосов
/ 29 октября 2014

Новое в Django 1.7 - это Form.add_error( field, message ).

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

7 голосов
/ 28 марта 2013

Может быть, это поможет вам. Обычно предпочитается, чтобы вы переопределяли clean, и внутри функции вы могли бы сделать следующее

Если вы хотите вызвать ошибки формы, вы можете это сделать.

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

убедитесь, что вы получите класс ошибки

если у вас есть ошибка, не связанная с полем, вы можете просто вызвать ошибку проверки, например, так:

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

Надеюсь, это поможет.

6 голосов
/ 02 апреля 2012
  1. Стандартным способом является raise ValidationError(message).
  2. Переместите валидацию, специфичную для поля, к clean_<fieldname>() методам, clean_address в вашем случае.ValidationError, поднятый таким способом, прикрепит сообщение об ошибке к определенному полю.Один из поднятых с clean() будет относиться к модели в целом.
...