У меня есть RegisterUserForm, который привязан к CustomUser (который расширяет AbstractUser). Прежде чем сохранить пользователя, я хочу проверить пароль1 и пароль2, если они равны, но метод clean (self) не вызывается. пользователь создается, даже если пароли не совпадают.
Я прочитал много вопросов и перепробовал много вещей, но не смог найти ответ. Мой код ниже
Я пытался добавить init и метод сохранения, но все равно не работает.
class RegisterUserForm(forms.ModelForm):
password1=forms.CharField(label=_("password"), min_length=4)
password2=forms.CharField(label=_("repeat password"), min_length=4)
class Meta:
model = CustomUser
fields = ('first_name', 'last_name', 'email', 'password1','password2')
def save(self, *args, **kwargs):
self.full_clean()
return super().save(*args, **kwargs)
def clean(self):
cleaned_data = super().clean()
print("clean is called")
password1 = form.cleaned_data.get("password1")
password2 = form.cleaned_data.get("password2")
if password1 and password2 and password1 != password2:
raise ValidationError('password_mismatch')
return self.cleaned_data
и мой взгляд
def register(request):
if request.method=='POST':
form = RegisterUserForm(request.POST)
if form.is_valid():
user = form.save(commit=False)
user.set_password(form.cleaned_data['password1'])
user.save()
email = user.email
messages.success(request, f'user with {email} created successfully')
return redirect('home')
else:
form = RegisterUserForm()
return render(request, 'users/register.html', {'form':form })