繁体   English   中英

无法使用自定义超级用户登录 Django 管理员

[英]Unable to login to Django admin with Custom superuser

我正在开发一个学校管理系统,通过使用 AbstractUser 扩展用户 model 创建自定义用户。 我可以使用自定义用户 model 创建超级用户,但是每当我尝试使用自定义超级用户帐户 Django 登录时,都会出现以下错误

请输入正确的员工帐户用户名和密码。 两个地方都要注意大小写。

这是我的自定义用户 model

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)

下面 function 代表创建自定义用户 function

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()

请帮忙

最佳实践是使用serializer or form创建新用户

对不起,伙计们,但我从@Mukhtor 的回答中得到了一些提示后找到了答案。 我正在做的是创建 CustomUser model 的实例,它将创建超级用户但不生成 hash 密码,所以我稍微更改了我的代码,现在它工作正常。

修改 create_customer function

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM