我正在使用基于类的视图和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
,但密码不会更新。
答案 0 :(得分:1)
您的视图基于FormView。这没有任何模型形式的知识,除了检查它是否有效之外,它不对数据做任何事情。保存表单时,SetPasswordForm会更改密码,但此视图永远不会这样做。
您可以覆盖form_valid
以显式调用form.save()
,但最好使用更合适的基类,例如UpdateView,它将为您执行此操作。