Невозможно отредактировать профиль пользователя и изменить пароль пользовательского пользователя в django

У меня есть пользовательская модель пользователя в моем проекте django. Я могу создавать пользователей с помощью формы, основанной на этой модели, но я не могу редактировать и изменять пароли. Как я могу сделать это возможным?

Создайте пользовательские модели пользователей, как показано ниже.

from django.db import models
from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
    class Role(models.TextChoices):
       ADMIN = 'ADMIN', 'Admin'
       DEVELOPER = 'DEVELOPER', 'Developer'
       TESTER = 'TESTER', 'Tester'

    base_role  = Role.ADMIN

    role = models.CharField(max_length=20, choices= Role.choices)

    def save(self, *args,**kwargs):
        if not self.pk:
           self.role = self.base_role
           return super().save(*args, **kwargs)

Я пытался отредактировать профиль пользователя и изменить пароль с помощью этой формы.

from django.contrib.auth.forms import UserCreationForm
from .models import User
from django import forms


class RegisterUserForm(UserCreationForm):

    email = forms.EmailField()
    first_name = forms.CharField(max_length=50)
    last_name = forms.CharField(max_length=50)

    class Meta:
        model = User
        fields = ('username', 'first_name', 'last_name', 'email','role', 'password1', 'password2')

 class EditUserForm(forms.ModelForm):

    email = forms.EmailField()
    first_name = forms.CharField(max_length=50)
    last_name = forms.CharField(max_length=50)

    class Meta:
         model = User
         fields = ('username', 'first_name', 'last_name', 'email')

соответствующий файл views.py

from django.shortcuts import render, redirect
from django.contrib.auth import authenticate, login, logout
from django.contrib import messages
from django.views.decorators.cache import never_cache
from .forms import RegisterUserForm, EditUserForm
from django.views import generic
from django.urls import reverse_lazy
from django.contrib.auth.views import PasswordChangeView
from django.contrib.auth.forms import PasswordChangeForm
from django.contrib.messages.views import SuccessMessageMixin



class EditProfileView(generic.UpdateView, SuccessMessageMixin):
    form_class = EditUserForm
    template_name = 'edit_profile.html'
    success_url = reverse_lazy('home')

    def get_object(self):
        return self.request.user

    def form_valid(self, form):
        messages.success(self.request, 'Updated Successfully!')
        return super().form_valid(form)


class PasswordsChangeView(PasswordChangeView):
    form_class = PasswordChangeForm
    template_name = 'change_password.html'
    success_url = reverse_lazy('home')

    def form_valid(self, form):
        messages.success(self.request, 'Password changed successfully')
        return super().form_valid(form)

Формы прекрасно работают с шаблонами, но они не обновляются на основе данных, которые я ввожу.

Вернуться на верх