Ввести ошибки в уже утвержденную форму?

django django-forms

29954 просмотра

4 ответа

39886 Репутация автора

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

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

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

Автор: Parand Источник Размещён: 09.10.2008 07:45

Ответы (4)


14 плюса

49497 Репутация автора

Вы можете добавить дополнительную информацию об ошибке в _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

Автор: Jonny Buchanan Размещён: 09.10.2008 07:48

86 плюса

156044 Репутация автора

Решение

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".

Автор: John Millikin Размещён: 09.10.2008 07:49

89 плюса

1305 Репутация автора

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

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

Автор: rstuart85 Размещён: 21.01.2015 01:45

0 плюса

1 Репутация автора

Принятый ответ правильный, но похоже на Django 1.5, ErrorListрасположенный в util.pyфайле. Так что импорт будет выглядеть так from django.forms.util import ErrorList.

Автор: Venskiy Ilya Размещён: 06.02.2019 04:00
Вопросы из категории :
32x32