我正在写一个视图给管理员更新另一个用户的密码,使用基于类的视图和Django的模型SetPasswordForm .
我的views.py
class UserSetPasswordUpdateView(GroupRequiredMixin, FormView):
form_class = forms.SetPasswordForm
model = User
template_name = 'app/admin/object_update.html'
success_url = reverse_lazy('portal:admin_user')
group_required = u"Administrator"
def get_form_kwargs(self):
kwargs = super(UserSetPasswordUpdateView, self).get_form_kwargs()
kwargs['user'] = User.objects.filter(pk=self.kwargs['pk'])
return kwargs
update_change_password = UserSetPasswordUpdateView.as_view()
我的urls.py
url(r'^app/admin/update-user-pass/(?P<pk>[0-9]+)$', update_views.update_change_password, name='update_change_password'),
并且不显示任何错误,只需转到 success_url
,但密码不会更新 .
1 回答
您的视图基于FormView . 这没有任何模型形式的知识,并且除了检查它是否有效之外,不对数据做任何事情 . 保存表单时,SetPasswordForm会更改密码,但此视图从不执行此操作 .
您可以覆盖
form_valid
以显式调用form.save()
,但最好使用更合适的基类,例如UpdateView,它将为您执行此操作 .