Пользователь, созданный в панели администратора, не может войти в панель администратора

У меня есть пользовательская модель пользователя:

class CustomUser(AbstractUser):
    ACCESS_LEVELS = (
        ('user', 'Авторизованный пользователь'),
        ('admin', 'Администратор')
    )
    email = models.EmailField(
        max_length=254,
        unique=True,
        verbose_name='Эл. почта'
    )
    access_level = models.CharField(
        max_length=150,
        choices=ACCESS_LEVELS,
        blank=True,
        default='user',
        verbose_name='Уровень доступа',
    )

    @property
    def is_admin(self):
        return self.is_superuser or self.access_level == 'admin'

    class Meta:
        verbose_name = 'Пользователь'
        verbose_name_plural = 'Пользователи'

    def __str__(self):
        return (
            f'email: {self.email}, '
            f'access_level: {self.access_level}'
        )

Зарегистрировался в панели администратора:

@admin.register(CustomUser)
class UserAdmin(admin.ModelAdmin):
    list_display = ('username', 'email', 'access_level')
    search_fields = ('email', 'access_level')
    list_filter = ('email',)

    def save_model(self, request, obj, form, change):
        if obj.is_admin:
            obj.is_staff = True
        obj.save()

Когда я создаю суперпользователя или пользователя со статусом сотрудника и пытаюсь войти в систему, появляется сообщение: Please enter the correct username and password for a staff account. Note that both fields may be case-sensitive.

Поэтому я погуглил эту проблему и попробовал все, что мог. Вот все проблемы, которые я исследовал:

База данных не синхронизирована: Я синхронизировал ее и ничего не изменилось.

Нет таблицы django_session: Я проверил, она есть.

Проблемные настройки: Я просто добавил созданные приложения в INSTALLED_APPS.

Пользователь настроен неправильно: is_staff, is_superuser и is_active все True.

Старые сессии: Я проверил таблицу django_session и она пуста.

Отсутствие или неправильный шаблон URL: Сейчас у меня есть url('admin/', admin.site.urls) в mysite/urls.py.

Неправильная команда сервера: Я использую python manage.py runserver.

Что-то не так с базой данных: Я попробовал удалить базу данных, а затем снова применить миграции, но ничего не изменилось.

Используйте UserAdmin[Django-GitHub] для регистрации UserModel. Она обеспечит функциональность для хэширования пароля, когда вы вводите пароль в панели администратора, так:

from django.contrib.auth.admin import UserAdmin
from .models import CustomUser

class CustomUserAdmin(UserAdmin):
    pass

admin.site.register(CustomUser, CustomUserAdmin)
Вернуться на верх