在我的 Django 应用程序中,用户可以注册到站点并从管理员那里获得 staff_user 权限。之后,员工用户可以使用默认的 django 管理站点创建和管理一些其他用户(普通用户)。现在,我想让员工用户只看到和管理他从管理站点创建的用户,我不希望他看到其他员工用户创建的其他用户。
我怎样才能做到这一点?我想我需要修改 admin.py 对吗?
在我的 Django 应用程序中,用户可以注册到站点并从管理员那里获得 staff_user 权限。之后,员工用户可以使用默认的 django 管理站点创建和管理一些其他用户(普通用户)。现在,我想让员工用户只看到和管理他从管理站点创建的用户,我不希望他看到其他员工用户创建的其他用户。
我怎样才能做到这一点?我想我需要修改 admin.py 对吗?
不要修改管理站点。
通常,您可以使用以下工具:
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 站点仅旨在为完全受信任的用户提供美化的开发工具,而不是为最终用户提供可定制的应用程序。
如果您的项目需要具有以下任何一项的管理站点...
...那么恐怕您必须创建自己的自定义应用程序。
您可以用您自己的替换库存 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 的管理员功能吗?