【问题标题】:Can I use an existing user as Django admin when enabling admin for the first time?第一次启用管理员时,我可以使用现有用户作为 Django 管理员吗?
【发布时间】:2012-07-05 10:47:30
【问题描述】:

我已经建立了一段时间的 Django 站点,但我从未启用 Django admin。

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

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

怎么做?

【问题讨论】:

    标签: django django-admin


    【解决方案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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-07
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 2012-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多