Django обновление пароля для пользователя не работает

Используя встроенную в django модель User, у меня есть базовое представление обновления пароля:

class ChangePasswordView(PasswordChangeView):
    form_class = ChangePasswordForm
    success_url = reverse_lazy('password_success')

    def form_valid(self, form):
        account = self.request.user.account
        email = account.user.email
        update_password_notification_task.delay(email)
        return redirect(self.success_url)

def password_success(request):
    return render(request, 'accounts/password_success.html')

его форма:

class ChangePasswordForm(PasswordChangeForm):
    class Meta:
        model = User

и его url:

path('password/',ChangePasswordView.as_view(template_name='accounts/change_password.html')),

И, наконец, шаблон:

<h1>Change Password...</h1>
<form method="POST">
    {% csrf_token %}
    {{form.as_p}}
    <button>Change Password</button>
</form>

Ошибок нет, и все вроде бы работает, но пароль не обновляется. Не знаю почему, вроде все сделал, но почему-то после обновления пароля и перенаправления на reverse_url если я пытаюсь выйти и войти, новый пароль не срабатывает.

Я не знаю, что вызывает эту проблему и в каком файле, поэтому трудно устранить неполадки.

Как ни странно, все, что мне нужно было сделать, это добавить form.save():

class ChangePasswordView(PasswordChangeView):
    form_class = ChangePasswordForm
    success_url = reverse_lazy('password_success')

    def form_valid(self, form):
        form.save()
        account = self.request.user.account
        email = account.user.email
        update_password_notification_task.delay(email)
        return redirect(self.success_url)
Вернуться на верх