Ввести ошибки в уже подтвержденную форму? - PullRequest
87 голосов
/ 09 октября 2008

После того, как мой form.Form подтвердит введенные пользователем значения, я передаю их отдельному (внешнему) процессу для дальнейшей обработки. Этот внешний процесс может потенциально найти дальнейшие ошибки в значениях.

Есть ли способ внедрить эти ошибки в уже проверенную форму, чтобы они могли отображаться с помощью обычных методов отображения ошибок формы (или есть более эффективные альтернативные подходы)?

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

Ответы [ 3 ]

94 голосов
/ 21 января 2015

Для Django 1.7+ вы должны использовать form.add_error() вместо прямого доступа к form._errors.

Документация: https://docs.djangoproject.com/en/stable/ref/forms/api/#django.forms.Form.add_error

88 голосов
/ 09 октября 2008

Form._errors можно рассматривать как стандартный словарь. Рекомендуется использовать класс ErrorList и добавлять ошибки в существующий список:

from django.forms.utils import ErrorList
errors = form._errors.setdefault("myfield", ErrorList())
errors.append(u"My error here")

И если вы хотите добавить неполевые ошибки, используйте django.forms.forms.NON_FIELD_ERRORS (по умолчанию "__all__") вместо "myfield".

14 голосов
/ 09 октября 2008

Вы можете добавить дополнительную информацию об ошибке непосредственно в атрибут _errors формы:

https://docs.djangoproject.com/en/1.5/ref/forms/validation/#described-later https://docs.djangoproject.com/en/1.6/ref/forms/validation/#modifying-field-errors

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...