django staff用户只管理自己的用户

django staff用户只管理自己的用户,django,django-models,django-admin,django-users,Django,Django Models,Django Admin,Django Users,在my Django应用程序中,用户可以注册到站点,并从管理员处获得staff_用户权限。 之后,staff用户可以使用默认的django管理站点创建和管理一些其他用户(普通用户)。 现在,我想让员工用户只查看和管理他从管理站点创建的用户,我不想让他看到其他员工用户创建的其他用户 我该怎么做?我想我需要修改admin.py,对吗?不要修改管理员站点 通常,您可以使用以下工具: 创建组 将用户添加到组 在模型上创建自定义权限,以指示某些操作 但是,您要问的是:现在,我想让员工用户只查看和管理

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


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

不要修改管理员站点

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

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

但是,您要问的是:
现在,我想让员工用户只查看和管理他从管理站点创建的用户,这在django admin中是不可能的

Django admin站点只打算作为完全信任用户的荣耀开发工具,而不是最终用户的可定制应用程序

如果您的项目需要一个管理网站与以下任何

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

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

不要修改管理站点

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

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

但是,您要问的是:
现在,我想让员工用户只查看和管理他从管理站点创建的用户,这在django admin中是不可能的

Django admin站点只打算作为完全信任用户的荣耀开发工具,而不是最终用户的可定制应用程序

如果您的项目需要一个管理网站与以下任何

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

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

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

如何最好地做到这一点取决于您的Django版本。 Django 1.5引入了一个“可配置的用户模型”,这使得这非常容易。

在早期版本中,您要么必须对用户模型进行monkeypatch,要么将该信息存储在单独的“用户配置文件”中,并以1:1的比例附加到用户。


关于Django admin中用户的信任(这不是一个主题,但我觉得有必要对thnee的答案发表评论),请查看我的答案中的链接:

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

如何最好地做到这一点取决于您的Django版本。 Django 1.5引入了一个“可配置的用户模型”,这使得这非常容易。

在早期版本中,您要么必须对用户模型进行monkeypatch,要么将该信息存储在单独的“用户配置文件”中,并以1:1的比例附加到用户。


关于Django admin中用户的信任(这不是一个话题,但我觉得有必要对thnee的答案发表评论),请查看我答案中的链接:

Ok,我创建了一个组,并将一些staff_用户放在那里,允许创建其他用户。当我以staff_用户身份登录并转到admin中的users视图时,我还看到其他staff用户创建的普通用户,我不希望出现这种情况。如何向其他员工用户隐藏我正在创建的用户?请勿使用此功能的is_staff use is_admin功能。我只能向员工用户显示他们自己的条目,但我不明白为什么我不能向他显示自己的用户。。myabe我需要为用户模型创建一个额外字段,以将用户与其创建者(员工用户)链接?如果您使用的是django 1.5,则可以使用您自己的用户对象,但这仍然不会更改django admin应用程序中当前可用的功能。“管理员不是你的应用程序”。好的,我创建了一个组,并将一些staff_用户放在那里,允许创建其他用户。当我以staff_用户身份登录并转到admin中的users视图时,我还看到其他staff用户创建的普通用户,我不希望出现这种情况。如何向其他员工用户隐藏我正在创建的用户?请勿使用此功能的is_staff use is_admin功能。我只能向员工用户显示他们自己的条目,但我不明白为什么我不能向他显示自己的用户。。myabe我需要为用户模型创建一个额外字段,以将用户与其创建者(员工用户)链接?如果您使用的是django 1.5,则可以使用您自己的用户对象,但这仍然不会更改django admin应用程序中当前可用的功能。“管理员不是你的应用程序”。