1

在我的 Django 应用程序中,用户可以注册到站点并从管理员那里获得 staff_user 权限。之后,员工用户可以使用默认的 django 管理站点创建和管理一些其他用户(普通用户)。现在,我想让员工用户只看到和管理他从管理站点创建的用户,我不希望他看到其他员工用户创建的其他用户。

我怎样才能做到这一点?我想我需要修改 admin.py 对吗?

4

2 回答 2

1

不要修改管理站点。

通常,您可以使用以下工具:

  • 创建组
  • 将用户添加到组
  • 在您的模型上创建自定义权限,以指示某些操作

https://docs.djangoproject.com/en/1.4/topics/auth/#custom-permissions

但是,您要问的是:Now, I would like to let the staff user see and manage only the users he created from the admin site在 django-admin 中是不可能的。

Django-admin 站点仅旨在为完全受信任的用户提供美化的开发工具,而不是为最终用户提供可定制的应用程序。

如果您的项目需要具有以下任何一项的管理站点...

  • 自定义管理功能。
  • 暴露给任何不完全信任的用户。

...那么恐怕您必须创建自己的自定义应用程序。

于 2013-04-10T17:16:10.047 回答
0

您可以用您自己的替换库存 UserAdmin,它会覆盖 queryset() 并进行过滤。更大的问题是过滤什么。默认用户模型不会在模型实例中存储“created_by”。因此,每当添加用户时,您都需要添加此信息。

如何最好地做到这一点取决于您的 Django 版本。Django 1.5 引入了一个“可配置的用户模型”,这使得这很容易。 https://docs.djangoproject.com/en/dev/releases/1.5/#configurable-user-model

在早期版本中,您要么必须对用户模型进行猴子补丁,要么将该信息存储在单独的“用户配置文件”中,以 1:1 附加到用户。 https://docs.djangoproject.com/en/dev/topics/auth/customizing/#extending-the-existing-user-model

关于 Django 管理员中对用户的信任(这不是一个主题,但我觉得有必要评论 thnee 的答案),请在此处查看我的答案中的链接:我应该使用 Django 的管理员功能吗?

于 2013-04-10T21:03:26.613 回答