Форма входа администратора не позволяет суперпользователю войти в систему
Когда я пытаюсь войти в панель администратора Django, я получаю ошибку: "Эта учетная запись была отключена". Однако статус пользователя активен. Я попытался зарегистрировать нового пользователя через консоль, но ошибка осталась.
Вы можете войти в административную панель только войдя на сам сайт через форму авторизации. Я использую пользовательскую модель пользователя.
Вот мой код: settings.py:
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend',
'users.backends.AuthBackend',
)
users.backends
class AuthBackend(ModelBackend):
def authenticate(self, request, username=None, password=None, **kwargs):
if username is None:
username = kwargs.get(UserModel.USERNAME_FIELD)
if username is None or password is None:
return
try:
user = UserModel._default_manager.get_by_natural_key(username)
except UserModel.DoesNotExist:
# Run the default password hasher once to reduce the timing
# difference between an existing and a nonexistent user (#20760).
UserModel().set_password(password)
else:
if user.check_password(password):
return user
def get_user(self, user_id):
try:
user = UserModel._default_manager.get(pk=user_id)
except UserModel.DoesNotExist:
return None
return user
users.models
class CustomAccountManager(BaseUserManager):
def create_user(self, email, full_name, password, **other_fields):
if not email:
raise ValueError('Enter email')
email = self.normalize_email(email)
if not full_name:
full_name = email.split('@')[0]
user = self.model(
email=email,
full_name=full_name,
**other_fields
)
user.set_password(password)
# other_fields.setdefault('is_active', True)
user.save()
return user
def create_superuser(self, email, full_name, password, **other_fields):
other_fields.setdefault('is_staff', True)
other_fields.setdefault('is_superuser', True)
# other_fields.setdefault('is_author', True)
other_fields.setdefault('is_active', True)
if other_fields.get('is_staff') is not True:
raise ValueError('Sorry but is_staff = False')
if other_fields.get('is_superuser') is not True:
raise ValueError('Sorry but is_superuser = False')
if other_fields.get('is_active') is not True:
raise ValueError('Sorry but is_active = False')
return self.create_user(email, full_name, password, **other_fields)
Сама пользовательская модель:
class NewUser(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(
verbose_name='Email Address', unique=True)
full_name = models.CharField(
max_length=250, verbose_name='full name', blank=True)
photo = models.ImageField(
upload_to='AuthorUser_photo/%Y/%m/%d/', verbose_name='Author's photo')
is_staff = models.BooleanField(default=False)
is_active = models.BooleanField(default=False)
is_author = models.BooleanField(default=False, verbose_name='Content Author?')
date_joined = models.DateTimeField(default=timezone.now)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['full_name']
objects = CustomAccountManager()
def __str__(self):
return self.full_name
def get_absolute_url(self):
return reverse('author_news_list', args=[str(self.pk)])
Профиль пользователя:
class ProfileAuthor(models.Model):
author = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
bio = RichTextField(verbose_name='About the Author')
achivment = models.CharField(max_length=350, verbose_name='Achievements', blank=True)
category = TreeForeignKey('news.Category', on_delete=models.CASCADE, verbose_name='Category', default=1)
def __str__(self):
return self.author.full_name
Я новичок в Django, поэтому могу не удивляться очевидным вещам. Заранее прошу прощения
Я пытался сбросить настройки бэкенда на значения по умолчанию, но это не помогло.