【问题标题】:Give permission according to data in Django根据Django中的数据授予权限
【发布时间】:2020-04-11 09:19:33
【问题描述】:

我正在开展一个项目,其中有多个机构。所有学院的学生、教师和工作人员的等级相同。我的问题是如何让这些机构分开?例如:机构 A 学生的数据资料不应由机构 B 的工作人员编辑。反之亦然。我可以使用 AbstractUser 类来赋予我自己的角色,但是对于具有相同权限但不应干扰其他机构的用户(如员工)呢?

【问题讨论】:

  • django-guardian 可以通过一个数据库帮助您实现这一目标,您需要为每个机构创建一个组并为记录而不是表添加该组权限

标签: python django django-models django-permissions


【解决方案1】:

Django 允许您使用多个数据库as illustrated in the docs。您可以为每个实体使用单独的数据库,并设置您的数据库路由器以根据用户配置文件中的某些属性将您定向到正确的数据库。

这个过程的一个例子是可用的here

【讨论】:

  • 这是一个有趣的解决方案。那么超级用户呢?我的意思是可以查看/编辑几乎所有数据的用户?所以我也可以为这些人保留一个单独的数据库?
  • 但是机构 A 的超级用户应该不能编辑机构 B 的数据,对吧?这样您就可以像对待所有其他用户一样对待他们。
  • 对。但是有一种情况(抱歉我没有提到)超级超级用户会查看所有机构。这种情况该怎么办?
  • 在这种情况下,您可以创建一个自定义管理器来查询多个数据库并为这些人连接结果。我不确定这是一个最佳解决方案。参考文献docs.djangoproject.com/en/3.0/topics/db/multi-db/…
猜你喜欢
  • 1970-01-01
  • 2014-08-16
  • 2013-10-15
  • 1970-01-01
  • 1970-01-01
  • 2015-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多