首页 > 解决方案 > Django 用户和权限

问题描述

我需要在我的 django 应用程序中开发用户和组的场景,共有三个组-管理员-经理-员工通常可以通过创建超级用户来使用管理员,我需要为不同的组创建用户-管理员可以访问由创建的所有记录所有用户

现在我的要求是一些用户属于经理组,一些普通用户属于员工组..

我完全混淆了普通用户与经理组中的关联用户之间的关系。

如何将一些员工用户分配给经理用户?

标签: django

解决方案


为了确保我们在同一页面上,您希望拥有以下用户结构:

  • 管理员可以看到一切
  • 经理可以看到 HIMSELF 和他的所有关联用户
  • 用户可以看到 HIMSELF 就是这样

所以从技术上讲,经理和用户之间只有一种关系

假设您的Admin与 Django 的本机管理员角色不同,您可以设置以下逻辑:

  • 以与您的自定义模型一对一的关系扩展 User 模型。让我们称之为Profile
  • 中的一个字段Profile可能role是 Admin、Manager 或 User(可能想要创建引用表并使用外键)
  • 另一个字段可能是related_manager用户模型的外键。这将是一种说“那个用户是我的经理”的方式

您需要在模型中添加特定控件,特别是:

  • related_manager如果用户是“用户”,则为必需(或可选?)。
  • related_managerNone如果用户不是“用户” ,则强制
  • related_manager必须是具有“经理”角色的用户
  • 您可能必须设置signals来处理“当需要管理用户的经理成为基本用户时会发生什么?” 这些用户会变得没有经理吗?或者您可能会阻止它发生,并且只有在没有附加用户时才能降级经理?这一切都取决于你想要什么

请注意,这是处理您的情况的众多方法之一


推荐阅读