В Django 1.7 или выше я бы сделал:
form.add_error(field_name, "Some message")
Метод add_error
был добавлен в 1,7. Переменная form
- это форма, которой я хочу манипулировать, а field_name
- это конкретное имя поля или None
, если мне нужна ошибка, не связанная с конкретным полем.
В Django 1.6 я бы сделал что-то вроде:
from django.forms.forms import NON_FIELD_ERRORS
errors = form._errors.setdefault(field_name, form.error_class())
errors.append("Some message")
В приведенном выше коде form
- это форма, которой я хочу манипулировать, а field_name
- это имя поля, для которого я хочу добавить ошибку. field_name
можно установить на NON_FIELD_ERRORS
, чтобы добавить ошибку, не связанную с конкретным полем. Я использую form.error_class()
для генерации пустого списка сообщений об ошибках. Вот как Django 1.6 внутренне создает пустой список, а не создает экземпляр ErrorList()
напрямую.