django员工用户只管理自己的用户

时间:2013-04-10 17:12:35

标签: django django-models django-admin django-users

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

我该怎么做?我想我需要修改admin.py吗?

2 个答案:

答案 0 :(得分: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网站仅作为完全信任用户的美化开发工具,而不是最终用户的可自定义应用。

如果您的项目需要具有以下任何内容的管理网站...

  • 自定义管理功能。
  • 任何非完全信任的用户的曝光。

...然后我担心你必须创建自己的自定义应用程序。

答案 1 :(得分:0)

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

如何最好地执行此操作取决于您的Django版本。 Django 1.5引入了“可配置用户模型”,这使得这非常简单。 https://docs.djangoproject.com/en/dev/releases/1.5/#configurable-user-model

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

关于Django管理员对用户的信任(这不是主题,但我觉得有必要对thnee的答案发表评论),请查看我的答案中的链接:Should I use Django's Admin feature?