Python 可在多个组织中扮演角色的用户的模型设计

Python 可在多个组织中扮演角色的用户的模型设计,python,django,database-design,django-models,django-guardian,Python,Django,Database Design,Django Models,Django Guardian,我需要一个Django模型,其中一个用户可以有一个功能,具有任意数量的组织。他的组织权限(更改、查看、删除)由他的角色决定。我非常确定我只需要一个“管理员”和一个“成员”角色 这需要行级权限,所以我决定使用django guardian。我在选择合适的模型设计时遇到困难。这些是替代方案 第一个将具有创建新角色的优势,但我认为我不需要这样做。此外,我还可以将unique_组合在一起,这样每个公司的用户只能拥有一项功能。我是否会在角色设置可以更改权限,并根据用户和组织之间的关系推断行级权限?这意味

我需要一个Django模型,其中一个
用户
可以有一个
功能
,具有任意数量的
组织
。他的组织权限(更改、查看、删除)由他的
角色决定。我非常确定我只需要一个“管理员”和一个“成员”角色

这需要行级权限,所以我决定使用django guardian。我在选择合适的模型设计时遇到困难。这些是替代方案

第一个将具有创建新角色的优势,但我认为我不需要这样做。此外,我还可以将
unique_组合在一起
,这样每个公司的用户只能拥有一项功能。我是否会在
角色
设置
可以更改
权限,并根据
用户
组织
之间的关系推断行级权限?这意味着我甚至不需要django guardian,对吧

第二个看起来简单得多,但这可能是骗人的。权限必须在
用户
添加到
组织
后立即设置,并且绝对是行级别的

这里的正确策略是什么

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

使用Party模型

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

一个人与一个组织有许多关系:

个人-<关系>-组织


组织之间也可以有关系。

我的问题很遗憾没有得到任何回应。如果你认为它可以改进或者应该在其他地方询问,请发表评论。我发现用
django-guardian
实现它非常困难,所以我开始开发
django-trusts
。它本身并不能解决您的问题,但将组织模型从权限模型中分离出来可能会使其更可行。使用
django trusts
,您可以根据他的组织角色分配信任基础。这对我来说是一个新的有趣的概念。我很快接受了它,但我的应用程序似乎有一些方面不适合聚会模型。一些数据将是高度层次化/关系化的,非常适合传统模型。我非常依赖ORM,我喜欢用有意义的对象名来理解关系。最后,我认为需要增加灵活性,上面的模式就足够了。我知道这是一个大胆的主张。如果我误解了聚会模式,请告诉我(因为这对我来说是新的)。@RoyPrins大多数关系实际上是网络/图形化的,而不是层次化的。例如,一个人可以为两家公司工作,也可以同时是客户和供应商。像hibernate这样的ORM可以很好地与Party模型配合使用(使用@heritation)。大多数公司同时向个人和组织销售产品,因此在这种情况下,政党模式是必需的。请参阅Silverston和Hay的数据建模书籍。看起来我意外地否决了您的答案,但stackoverflow不允许我现在修复它,因为它是“在过去24小时内投票的”。“很抱歉,”托马斯·比代克用额外的一票修正了它;)@gabn88,stackoverflow现在说我不能这么做,因为投票时间太长了。。。