PasswordChangeForm与自定义用户模型 [英] PasswordChangeForm with Custom User Model

查看:426
本文介绍了PasswordChangeForm与自定义用户模型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



class NewUserModel(AbstractUser):

我最近通过对抽象用户进行子类化实现了自己的用户模型。 / p>

在我这样做之后, PasswordChangeForm 停止工作。我通过覆盖类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
返回kwargs


解决方案

刚刚花了大部分时间尝试实现这一点。最终我发现用FBV实现它很简单:

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

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

返回渲染(请求,'用户/password.html',{
'form':form,
})


I recently implemented my own user model by subclassing abstract user.

class NewUserModel(AbstractUser):

After I did this the PasswordChangeForm stopped working. I fixed the issue in the UserCreationForm by overriding the class Meta: model field. However, the ChangePasswordForm doesn't specify a model and I can't see any reason why it shouldn't work with the new user model.

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

解决方案

Just spent most of the day trying to achieve this. Eventually I found out it was pretty simple to implement it with a 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,
    })

这篇关于PasswordChangeForm与自定义用户模型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆