PasswordChangeForm与自定义用户模型 [英] PasswordChangeForm with Custom User Model
问题描述
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屋!