Не могу зайти на cайт администратора

Я создал пользовательскую модель, и когда я создаю суперпользователя с помощью консоли, то мне пишет: "Superuser created successfully", но после этого я захожу на сайт администратора и не могу войти за теми данными, которые я ввел при создании пользователя.

Модель пользователя:

class CustomUserManager(BaseUserManager):
    def create_user(self, username, email, password, **other_fields):
        other_fields.setdefault("is_staff", False)
        other_fields.setdefault("is_superuser", False)
        user = self.model(
            username=username,
            email=self.normalize_email(email),
            **other_fields
        )
        user.set_password = password
        user.save(using=self._db)
        return user

    def create_superuser(self, email, username, password, **other_fields):
        other_fields.setdefault('is_staff', True)
        other_fields.setdefault('is_superuser', True)
        user = self.create_user(
            username=username,
            email=email,
            password=password,
            **other_fields
        )
        if other_fields.get("is_staff") is not True:
            raise ValueError("Superuser must have is_staff=True.")
        if other_fields.get("is_superuser") is not True:
            raise ValueError("Superuser must have is_superuser=True.")
        user.save(using=self._db)
        return user


class CustomUser(AbstractBaseUser, PermissionsMixin):
    username = models.CharField(
        verbose_name='Username', db_index=True, max_length=16,
        help_text='Enter your username', unique=True
    )
    first_name = models.CharField(verbose_name='First name', max_length=20, help_text='Enter your name', null=True)
    last_name = models.CharField(verbose_name='Last name', max_length=20, help_text='Enter your surname')
    email = models.EmailField(verbose_name='Email', help_text='Enter your email', unique=True)
    sex = models.CharField(
        verbose_name='Sex', max_length=6,
        choices=[('Female', 'Female'), ('Male', 'Male')], null=True
    )
    password = models.CharField(
        verbose_name='Password', max_length=16,
        help_text='Enter your password'
    )
    date_joined = models.DateTimeField(verbose_name="date joined", default=timezone.now, editable=False)
    is_staff = models.BooleanField(verbose_name='Staff', default=False)
    is_active = models.BooleanField(default=True)
    is_superuser = models.BooleanField(verbose_name='Superuser', default=False)
    USERNAME_FIELD = 'email'
    EMAIL_FIELD = 'email'
    REQUIRED_FIELDS = ['username']
    objects = CustomUserManager()

    class Meta:
        verbose_name = _('user')
        verbose_name_plural = _('users')

    def get_full_name(self):
        return '{0} {1}'.format(self.first_name, self.last_name)

    def short_name(self):
        return self.first_name

    def __str__(self):
        return self.username

    def email_user(self, subject, message, from_email=None, **kwargs):
        send_mail(subject, message, from_email, [self.email], **kwargs) 

Настройки:

INSTALLED_APPS = [
    'users',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'catalog'
]

AUTH_USER_MODEL = 'users.CustomUser'
AUTHENTICATION_BACKENDS = ['users.backends.Authentication']

Cкрин из бд:

бд

Я пытался вставлять пароль прямо в бд, но мне это не помогло.

У меня password и email в функци authenticate возращали None (я думал туда передаються данные ввода), мне пришлось брать данные полей ввода с помощью параметра request.

class Authentication(ModelBackend):
    def authenticate(self, request, email=None, password=None, **kwargs):
        if email is None or password is None:
            email = request.POST['username']
            password = request.POST['password']
        try:
            user = CustomUser.objects.get(email=email)
        except ObjectDoesNotExist:
            return None
        else:
            hash_paswword = user.password
            check = check_password(password, hash_paswword)
            if check and self.user_can_authenticate(user):
                return user
            print('Not correct password')
            return None

или

class Authentication(ModelBackend):
    def authenticate(self, request,email=None,password=None, **kwargs):
        User = get_user_model()
        if email is None or password is None:
            email = request.POST['username']
            password = request.POST['password']
        try:
            user = User._default_manager.get_by_natural_key(email)
        except User.DoesNotExist:
            User().set_password(password)
        else:
            if user.check_password(password) and self.user_can_authenticate(user):
            return user

Не знаю можно ли по-другому сделать.

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