第一次启用管理员时,我可以使用现有用户作为 Django 管理员吗?
Posted
技术标签:
【中文标题】第一次启用管理员时,我可以使用现有用户作为 Django 管理员吗?【英文标题】:Can I use an existing user as Django admin when enabling admin for the first time? 【发布时间】:2012-07-05 10:47:30 【问题描述】:我已经建立了一段时间的 Django 站点,但我从未启用 Django admin。
用户帐户在 LDAP 和 Django 上都注册了,但主记录基于 LDAP。所以我必须使用 LDAP 中的帐户作为超级用户。
当我启用 Django Admin 时,系统会提示我创建一个超级用户。我可以使用现有帐户(在 LDAP 和 Django db 上注册)作为超级用户吗?
怎么做?
【问题讨论】:
【参考方案1】:是的,但您将通过 Django shell 来完成:
python manage.py shell
然后从数据库中获取你的用户:
from django.contrib.auth.models import User
user = User.objects.get(username="myname")
user.is_staff = True
user.is_admin = True
user.save()
退出 shell,该用户现在将成为管理员用户。
你也可以加一行
user.is_superuser = True
如果您希望或需要此用户成为超级用户并拥有所有可用权限,请在调用 user.save()
之前。
【讨论】:
你是说跳过用户创建部分?谢谢。 是的,如果您已经有想要使用的用户,则可以跳过该部分。 有效!但是,在登录管理页面后,它显示“您无权编辑任何内容。”。是否需要修改应用程序中的任何内容? 好的,我必须添加行user.is_superuser = True
才能获得权限。
实际上,user.is_admin = True
行没有做任何事情,因为通用 User 模型中不存在 is_admin
属性,正确的行是 user.is_superuser = True
【参考方案2】:
接受的答案在 Django 3 上产生错误:
AttributeError: Manager isn't available; 'auth.User' has been swapped for 'users.User'
来自 Django 外壳:
python manage.py shell
运行这个:
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()
【讨论】:
以上是关于第一次启用管理员时,我可以使用现有用户作为 Django 管理员吗?的主要内容,如果未能解决你的问题,请参考以下文章
在我的应用程序上启用 iCloud 时,现有核心数据数据库未上传到 iCloud