可以在多个组织中拥有角色的用户的模型设计

时间:2015-02-28 10:09:01

标签: python django database-design django-models django-guardian

我需要一个Django模型,其中User可以有FunctionOrganisations。他对组织的权限(更改,查看,删除)由他的Role确定。我很确定我只需要一个“管理员”和“成员”角色。

这需要行级权限,所以我决定使用django-guardian。我无法选择合适的模型设计。这些是替代方案

enter image description here

第一个会有创建新角色的优势,但我认为我不需要这样做。此外,我可以强制执行unique_together,以便用户每个公司只能拥有1个功能。我会在can_change设置Role权限,并根据UserOrganization之间的关系推断行级权限吗?这意味着我甚至不需要django-guardian,对吗?

第二个看起来更简单,但也许这是骗人的。只要将User添加到Organization并且肯定是行级别,就必须设置权限。

这里的正确策略是什么?

澄清一下:在这两种情况下,用户都可以是一个组织的管理员,而只是另一个组织的成员。

1 个答案:

答案 0 :(得分:0)

使用派对模型。

用户不是个人,而是用户。人和组织是政党。一方有一个(或没有)用户。

一个人与组织有很多(很多)关系:

个人 - <关系> - 组织

组织也可以彼此建立关系。