Хотя это старый пост, если вы хотите применить проверки к более чем одному полю одной формы / модели, используйте clean()
. Этот метод возвращает cleaned_data словарь.
Для отображения ошибок пользователям вы можете использовать метод add_error(<fieldname>, "your message")
. Это покажет ошибки вместе с именем поля в верхней части формы. Пример показан ниже:
add_error()
автоматически удаляет поле из словаря cleaned_data , вам не нужно удалять его вручную. Также вам не нужно ничего импортировать, чтобы использовать это.
документация здесь
def clean(self):
if self.cleaned_data['password1'] != self.cleaned_data['password2']:
msg = 'passwords do not match'
self.add_error('password2', msg)
return self.cleaned_data
Если вы просто хотите проверить правильность одного поля формы / модели, используйте clean_<fieldname>()
. Этот метод будет принимать значения из словаря cleaned_data , а затем вы сможете проверять наличие логических ошибок. Всегда возвращайте значение после проверки логики.
def clean_password(self):
password = self.cleaned_data['password']
if len(password)<6:
msg = 'password is too short'
self.add_error('password', msg)
return password