在Django中,如何处理具有1个以上有权访问相同内容的多个用户类型?

时间:2019-01-21 08:54:35

标签: python django

在Django应用程序中,我有一个名为application.py的模型,该模型是由用户说“ u”创建的。我想稍后列出用户“ u”创建的所有应用程序,因此我可能需要从user.py添加对模型application.py的引用。

作为管理员,我还有一个要求,我需要向同一应用程序的任意数量的用户提供访问权限。因此,我认为这可以通过多对多关系完成(因为用户可以访问许多应用程序)。

现在的问题是,是否可以用用户组来实现此行为,一个组负责处理一个应用程序,以便在以后的某个时间点,我可以根据需要从后端向各个用户添加任意​​数量的用户。组来管理相同的应用程序??

哪个更好,使用模型application.py或将组与application.py相关联来管理用户 和使用组管理用户。 enter image description here

1 个答案:

答案 0 :(得分:0)

有多种解决方法,但是从将来的灵活性角度来看,这听起来像是角色,权限和组关系:

  • ApplicationUserthrough的{​​{1}}有多对多的关系。
  • 每个成员资格都指向一个Membership。开头可能是硬编码的(只是一个字符串,例如“ admin”或“ viewer”)。
  • 通过这种方式,Role可以与UserApplication关联到viewer
  • 将来,要增加灵活性,您将拥有一个描述角色的模型admin(并且可以与一个或多个Role模型相关联以列出每个角色的权限)。因此Permission可以通过ForeignKey指向Membership的指针。

检查多对多关系中其他字段上的documentation

也有解决此问题的软件包,例如django-permissions和django-role-permission