2014-10-20 85 views
3

我最近通过继承抽象用户来实现我自己的用户模型。带自定义用户模型的PasswordChangeForm

class NewUserModel(AbstractUser):

我没有在此之后PasswordChangeForm停止工作。我通过覆盖class Meta:模型字段解决了UserCreationForm中的问题。然而,ChangePasswordForm没有指定一个模型,我看不到任何理由为什么它不应该与新的用户模型一起工作。

views.py

class PasswordChangeView(LoginRequiredMixin, FormView): 
    template_name = 'change_password.html' 
    form_class = PasswordChangeForm 

    def get_form_kwargs(self): 
     kwargs = super(PasswordChangeView, self).get_form_kwargs() 
     kwargs['user'] = self.request.user 
     return kwargs 

回答

6

刚用了大半天的努力实现这一目标。最终我发现用FBV实现它非常简单:

@login_required 
def UpdatePassword(request): 
    form = PasswordChangeForm(user=request.user) 

    if request.method == 'POST': 
     form = PasswordChangeForm(user=request.user, data=request.POST) 
     if form.is_valid(): 
      form.save() 
      update_session_auth_hash(request, form.user) 

    return render(request, 'user/password.html', { 
     'form': form, 
    }) 
+0

不错!我将对我的CBV做同样的事情。我会做更新。 – 2014-11-18 02:24:18