SetPasswordForm: очищается, только если установлено поле new_password1 или new_password2
Мне нужно подтвердить updatePasswordForm только если new_password1 или new_password2 не пусты. Я хочу сделать поля пароля необязательными, они предназначены только для обновления пароля. В представлении есть не только форма updatePasswordForm.
Я использую следующий подход:
.forms
class UpdatePasswordForm(SetPasswordForm):
class Meta:
model = Account
fields = ("new_password1","new_password2")
def __init__(self, *args, **kwargs):
super(SetAdminPasswordForm, self).__init__(*args, **kwargs)
self.fields['new_password1'].required = False
self.fields['new_password2'].required = False
.вид (CBV):
Это работает, но я думаю, что это не лучший вариант. Я хотел бы использовать чистый метод из UpdatePasswordForm, что-то вроде этого:
class UpdatePasswordForm(SetPasswordForm):
class Meta:
model = Account
fields = ("new_password1","new_password2")
def clean(self):
cleaned_data = super().clean()
new_password1 = cleaned_data.get('new_password1')
new_password2 = cleaned_data.get('new_password2')
if new_password1 or new_password2:
# proceed with SetPasswordForm.clean