Django模型和权限限制

2024-05-14 17:54:52 发布

您现在位置:Python中文网/ 问答频道 /正文

型号:

Company

Product

我们有一个母公司(所有人)谁可以创建任何Company和任何{},作为子公司或子产品。在

现在,我想完成的是限制哪家公司可以对其他公司和产品进行同样的破坏。在

以下是场景:

公司和分公司(分包商):

Master (creates) -> Company “A”
Master (creates) -> Company “B” (creates) -> Company “C”
Master (creates) -> Company “D” (creates) -> Company “F” (creates) -> Company “G”

公司和产品分配:

^{pr2}$

子公司产品分配(管理):

Company “B” (assign products only to sub-level) -> Company “C”
Company “D” (assign products only to sub-level) -> Company “F”
Company “F” (assign products only to sub-level) -> Company “G”

但是,如果Company D从子级别删除产品,则也将递归地从所有子级别产品中删除。在

使用Django core有什么可靠的方法可以做到这一点,或者可能有一个推荐的库我找不到?我还在Django文档中看到了对Model Meta options和{}方法的引用。。。但我也不确定我需要什么。在


Tags: todjango方法masteronly产品公司级别
3条回答

使用检查用户所属公司的基础视图。每个(继承的)视图将根据登录用户的公司限制功能。使用django-mptt处理树结构数据。在

我能建议你最好的包装是DJANGO GUARDIAN。但你真正想要的是Role Based Access Control Logic。在

不幸的是,django guardian不支持角色。Linked issue。所以我建议你写下你自己的观点。但您可以查看以下软件包:

class Company(models.Model)
    parent = models.ForeignKey('self', blank=True, null=True, related_name='children')


Company.objects.get(pk=1).children.all()

我可以通过Views控制其余的逻辑

相关问题 更多 >

    热门问题