Если вы выдаете ошибку, поток управления этого метода и вызывающие стороны этого метода останавливаются, пока не найдется метод, имеющий диапазон try
- except
, и соответствующим образом перехватит исключение.
Но иногда поле может содержать несколько ошибок. Например, если у вас есть пароль, вы можете добавить ошибки, потому что он слишком короткий, не содержит ди git, строчные буквы и / или верхний регистр.
Тогда вы можете реализовать это с помощью :
def clean_password(self):
pwd = self.cleaned_data['password']
if len(pwd) < 10:
self.add_error('password', 'The password is too short.')
if not any(c.isupper() for c in pwd):
self.add_error('password', 'The password should contain an uppercase character.')
if not any(c.islower() for c in pwd):
self.add_error('password', 'The password should contain an lowercase character.')
if not any(c.isdigit() for c in pwd):
self.add_error('password', 'The password should contain an digit.')
return pwd
Если вы подняли ValidationError
для одного из них, он не может добавить mutliple проблем, которые могут возникнуть с паролем.
Однако вы можете передать список ошибок конструктору данных ValidationError
, поэтому вы можете использовать два взаимозаменяемых.