为可以在多个组织中担任角色的用户设计模型

Model design for a user who can have roles at multiple organizations

我需要一个 Django 模型,其中 User 可以有一个 Function 和任意数量的 Organisations。他对组织的权限(更改、查看、删除)由他的 Role 决定。我很确定我只需要一个 "admin" 和一个 "member" 角色。

这需要行级权限,所以我决定使用 django-guardian。我在选择合适的模型设计时遇到了麻烦。这些是备选方案

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

第二个看起来简单多了,但也许这是骗人的。一旦将 User 添加到 Organization 并且绝对是行级的,就必须设置权限。

这里正确的策略是什么?

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

使用派对模式。

用户不是人,是用户。个人和组织是当事人。一方有一个(或没有)用户。

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

个人-<关系>-组织

组织之间也可以有关系。