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

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

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

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

Ответ 1

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 ошибки, используйте django.forms.forms.NON_FIELD_ERRORS (по умолчанию "__all__") вместо "myfield".

Ответ 4

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