Django - form Clean() и полевые ошибки

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

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

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

Ответ 2

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

Если вы хотите поднять конкретные ошибки, которые вы могли бы сделать, выполните следующие действия.

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

это означает, что вы получите класс ошибок

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

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

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

Ответ 3

  • Стандартный способ - raise ValidationError(message).
  • Перенесите проверку, зависящую от поля, на методы clean_<fieldname>(), clean_address в вашем случае. ValidationError, поднятый в таком методе, будет прикреплять сообщение об ошибке к определенному полю. Один, поднятый из clean(), будет отнесен к модели в целом.