第一次启用管理员时,我可以使用现有用户作为 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

登录时区分注册用户和访客

oracle 12c 用户名口令在哪查看啊,我安装时忘记了,重安装,使用的现有windows用户。

Magnolia CMS - 公共用户注册通知

HSQLDB:为现有数据库启用 LOB 压缩

如果用户需要向现有选项添加新选项,如何在访问中创建一个组合框,该组合框可以转换为文本框以启用书写?