2014-10-20 86 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