首次启用管理员时,我可以将现有用户用作Django管理员吗?

Use*_*007 18 django django-admin

我已经建立了一段时间的Django网站,但我从未启用过Django管理员.

用户帐户在LDAP和Django上都已注册,但主记录基于LDAP.所以我必须使用LDAP中的帐户作为超级用户.

当我启用Django Admin时,系统会提示我创建一个超级用户.我可以使用现有帐户(在LDAP和Django db上注册)作为超级用户吗?

怎么样?

Her*_*aaf 45

是的,但你会通过Django shell来做到这一点:

python manage.py shell
Run Code Online (Sandbox Code Playgroud)

然后从数据库中获取您的用户:

from django.contrib.auth.models import User
user = User.objects.get(username="myname")
user.is_staff = True
user.is_admin = True
user.save()
Run Code Online (Sandbox Code Playgroud)

退出shell,该用户现在将成为管理员用户.

您也可以添加该行

user.is_superuser = True
Run Code Online (Sandbox Code Playgroud)

在调用之前,user.save()如果您希望或需要此用户成为超级用户并拥有所有可用权限.

  • 实际上,“ user.is_admin = True”行什么都不做,因为通用用户模型中不存在“ is_admin”属性,正确的行是“ user.is_superuser = True” (2认同)

Car*_*ira 13

接受的答案在 Django 3 上生成了一个错误:

AttributeError: Manager isn't available; 'auth.User' has been swapped for 'users.User'
Run Code Online (Sandbox Code Playgroud)

来自 Django shell:

python manage.py shell
Run Code Online (Sandbox Code Playgroud)

运行这个:

from django.contrib.auth import get_user_model
User = get_user_model()
user = User.objects.get(username="myname")
user.is_staff = True
user.is_admin = True
user.is_superuser = True
user.save()
Run Code Online (Sandbox Code Playgroud)