Свои сообщения об ошибках при валидации формы в Django

Думаю, вы хотите, чтобы ваши сообщения об ошибках в заполняемых формах были на том же языке, что и сам сайт. Один из простых способов - это добавить следующий код в соответствующий forms.py. Затем формы надо будет наследовать не от forms.Form, а от MyForm (обратите внимание, ExampleForm, в примере ниже, наследуется от него).

class MyForm(forms.Form):
    def __init__(self, *args, **kwargs):
        super(MyForm, self).__init__(*args, **kwargs)
        for k, field in self.fields.items():
            if 'required' in field.error_messages:
                field.error_messages['required'] = u'Это поле обязательно!'

class ExampleForm(MyForm):
    title = forms.CharField(max_length=100, required=True, label=u'Название')

Полный список error_messages для различных типов полей можно увидеть, если просмотреть этот раздел: https://docs.djangoproject.com/en/1.3/ref/forms/fields/#built-in-field-classes

Вот что есть на данный момент:

required - показывается, если данное поле обязательно;
max_length - если превышено максимальное количество символов в символьном поле / в случае с файлами - длина имени файла;
min_length - если символов меньше, чем должно быть, в символьном поле;
invalid_choice - если выбран невозможный choice;
invalid - при неправильном email’е и прочем неправильном вводе данных;
max_value - если превышено числовое значение;
min_value - если значение меньше минимального числового ограничения;
max_digits - если превышено количество цифр в числе;
max_decimal_places - если превышено количество цифр после запятой;
max_whole_digits - если превышено количество цифр до запятой;
missing - если файл не найден;
empty - если файл пустой;
invalid_image - если изображение повреждено;
invalid_list  - если неправильный список choice’ов;
invalid_link - для URLField - вызывается, если данного url не существует.

Основано на примере с http://stackoverflow.com/questions/1481771/django-override-default-form-error-messages

django