2013-04-10 55 views
0

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

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

回答

1

请勿修改管理网站。

在一般情况下,你必须提供以下工具:

  • 创建组
  • 将用户添加到组
  • 您的模型创建自定义的权限,用以表示一定的行动

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

但是,你在问什么:在django-admin中不可能使用。

Django管理站点是仅作为完全可信用户的荣耀开发工具,而不是作为最终用户的可定制应用程序。

如果你的项目需要一个管理网站用以下任一...

  • 定制论行政功能。
  • 接触任何不是的用户完全可信

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

+0

好吧,我做一个小组,并将其中一些staff_users授权给其他用户。当我以staff_user的身份登录并转到管理员的用户视图时,我也看到其他员工用户创建的普通用户,我不想这样做。如何将我创建的用户隐藏给其他员工用户? – avafab 2013-04-10 17:28:55

+0

不要我们is_staff使用is_admin功能。 – karthikr 2013-04-10 17:50:48

+0

我能够向工作人员用户展示他们自己的参赛作品,但我不明白为什么我不能向他展示他自己的用户。myabe我需要为用户模型创建一个额外的领域,以将用户与他的创作者(工作人员)? – avafab 2013-04-10 18:12:19

0

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

如何做到这一点取决于你的Django版本。 Django 1.5引入了“可配置用户模型”,这使得这非常简单。 https://docs.djangoproject.com/en/dev/releases/1.5/#configurable-user-model

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

关于用户的信任(这是不是一个话题,但我觉得有必要对thnee的答案评论)在Django管理,检查出我的答案在这里的链接:Should I use Django's Admin feature?

相关问题