2014-10-20 12 views
3

Недавно я реализовал свою собственную модель пользователя путем подкласса абстрактного пользователя.PasswordChangeForm с пользовательской моделью пользователя

class NewUserModel(AbstractUser):

После того как я сделал этого PasswordChangeForm перестал работать. Я исправил проблему в UserCreationForm, переопределив поле модели class Meta:. Тем не менее, 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

Nice! Я собираюсь сделать то же самое с моим CBV. Будет обновляться, когда я это сделаю. –

Смежные вопросы