Невозможно войти в админку Django с пользовательским суперпользователем
Я разрабатываю систему управления школой, в которой я создаю пользовательского пользователя, расширяя модель User с помощью AbstractUser. Мне удается создать суперпользователя, используя модель пользовательского пользователя, но всякий раз, когда я пытаюсь войти в систему, используя учетную запись суперпользователя, Django выдает следующую ошибку
Пожалуйста, введите правильное имя пользователя и пароль для учетной записи персонала. Обратите внимание, что оба поля могут быть чувствительны к регистру.
Это моя модель пользовательского пользователя
class CustomUser(AbstractUser):
ADMIN = "1"
STAFF = "2"
STUDENT = "3"
Email_to_User_Type_Map = {
'admin': ADMIN,
'staff': STAFF,
'student': STUDENT
}
user_type_data = ((ADMIN, 'Admin'), (STAFF, 'Staff'), (STUDENT, 'Student'))
user_type = models.CharField(
default=1, choices=user_type_data, max_length=10)
Нижеприведенная функция представляет собой создание пользовательской функции
def create_customUser(username, email, password, email_status):
new_user = CustomUser()
new_user.username = username
new_user.email = email
new_user.password = password
if email_status == "staff" or email_status == "student":
new_user.is_staff = True
elif email_status == "admin":
new_user.is_staff = True
new_user.is_superuser = True
new_user.is_active = True
new_user.save()
помогите
Простите, ребята, но я нашел ответ после получения подсказки из ответа @Mukhtor. Я создаю экземпляр модели CustomUser, который создает суперпользователя, но не генерирует хэш-пароль, поэтому я немного изменил свой код и теперь он работает нормально.
Модифицированная функция create_customer
def create_customUser(username, email, password, email_status):
new_user = CustomUser.objects.create_user(
username=username, email=email, password=password)
if email_status == "staff" or email_status == "student":
new_user.is_staff = True
elif email_status == "admin":
new_user.is_staff = True
new_user.is_superuser = True
new_user.is_active = True
new_user.save()
return