Django - Невозможно войти в админку сайта, создав пользователя прямо с сайта admit

Итак, я создал модель пользователя Customer, используя AbstractUser

Model.py

class Department(models.Model):
    department_name = models.CharField(max_length=20)

    def __str__(self):
        return self.department_name


class Role(models.Model):
    role_name = models.CharField(max_length=120)

    def __str__(self):
        return self.role_name

class Task(models.Model):
    task_desp = models.TextField(max_length=100)
    in_progress = models.BooleanField()
    
    def __str__(self):
        return self.task_desp

class Employee(AbstractUser):
    username = None
    email = models.EmailField(max_length=100,unique=True)
    phone_number = models.CharField(max_length=14)
    department = models.ForeignKey(Department,on_delete=models.CASCADE,null=True,blank=True)
    role = models.ForeignKey(Role,on_delete=models.CASCADE,null=True,blank=True)
    address = models.TextField(max_length=200)
    task_assigned = models.ForeignKey(Task,on_delete=models.CASCADE,null=True,blank=True)

    USERNAME_FIELD= 'email'
    REQUIRED_FIELDS = ['phone_number']

    objects= UserManager()

    def __str__(self):
        return self.email

manager.py

from django.contrib.auth.base_user import BaseUserManager 

class UserManager(BaseUserManager):

    use_in_migrations = True

    def create_user(self,email,password=None,**extra_fields):
        if not email:
            raise ValueError("Please provide email")

        email = self.normalize_email(email)
        user = self.model(email=email,**extra_fields)
        user.set_password(password)
        user.save(using=self._db)
        return user    

    def create_superuser(self,email,password,**extra_fields):
        extra_fields.setdefault('is_staff',True)
        extra_fields.setdefault('is_superuser',True)
        extra_fields.setdefault('is_active',True)

        if extra_fields.get('is_staff') is not True:
            raise ValueError("super user must have staff user")

        return self.create_user(email,password,**extra_fields)    

Добавлена модель в настройках

AUTH_USER_MODEL = 'emp.Employee'

Итак, я создал 3 пользователя через python manage.py createsuperuser и смог войти на сайт admit, но когда я создал 4-го пользователя прямо с сайта admin, дал ему все права staff и superuser, я не могу войти

Я получаю эту ошибку

Пожалуйста, введите правильный email и пароль для учетной записи персонала. Обратите внимание что оба поля могут быть чувствительны к регистру.

enter image description here

Я создал этого пользователя Elon (не обращайте внимания на имя) прямо из панели администратора, но я не могу войти в систему с помощью предоставленного email и пароля, несмотря на то, что я проверил опции staff и superuser. Я думаю, что проблема в пароле, который показывается напрямую, потому что для других 3 пользователей пароль зашифрован.

При сохранении -adminmodel сохраняет пароль напрямую, а не хэш. Вы должны сделать это самостоятельно при сохранении модели в модели admin:

Def model_save(sale, obj, *args, **kwargs):
    If not obj.pk:
        obj.set_password(password)
    super().model_save()
Вернуться на верх