dco*_*bus 4 python django python-3.x
楷模:
Company
Product
我们有一家母公司(所有者的所有者),他们可以创建任何Company和任何Product子公司或子产品.
现在,我想要完成的是限制哪家公司可以CRUD其他公司和产品.
这是场景:
公司及子公司(分包商):
Master (creates) -> Company “A”
Master (creates) -> Company “B” (creates) -> Company “C”
Master (creates) -> Company “D” (creates) -> Company “F” (creates) -> Company “G”
Run Code Online (Sandbox Code Playgroud)
公司和产品分配:
Master (Add Product) -> Show all products
Master (assign products to top levels) -> Company “A”, Company “B” and Company ”D”
Run Code Online (Sandbox Code Playgroud)
子公司产品分配(管理):
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”
Run Code Online (Sandbox Code Playgroud)
但是,如果Company D从子级别删除产品,则也会以递归方式从所有子级别产品中删除.
有没有确定的方法可以用Django核心这样做,或者可能有一个推荐的库,我找不到?我也在Django文档中看到了参考Model Meta options和Options.permissions方法......但我不确定这也是我需要的.
我建议你最好的包是DJANGO GUARDIAN.但你真正在寻找什么Role Based Access Control Logic.
不幸的是,django-guardian不支持角色.相关问题.所以我建议你为此写自己的观点.但您可以查看以下这些包:
class Company(models.Model)
parent = models.ForeignKey('self', blank=True, null=True, related_name='children')
Company.objects.get(pk=1).children.all()
Run Code Online (Sandbox Code Playgroud)
其余的逻辑我可以通过控制Views
| 归档时间: |
|
| 查看次数: |
563 次 |
| 最近记录: |