django允许其他所有者

时间:2014-11-26 20:33:57

标签: python django django-models django-rest-framework django-permissions

想象一下这些模型:erd

User有很多Bucket个,BucketItem多个django-guardian。用户A只能看到自己的存储桶和项目列表。现在,我想让用户B看到用户的A桶而不是项目。这是否可以使用Django内置权限系统,或者我需要{{1}}这样的目的?

我是django的新手,我有点困惑。

1 个答案:

答案 0 :(得分:3)

Django在模型方面有两种不同级别的权限:模型级别和对象级别。

模型级权限是Django中的默认类型,它们由默认权限后端强制执行。它们在“全有或全无”的基础上工作,因此用户可以对模型的所有对象具有权限(例如删除),或者不具有权限。

如果您遇到“用户A需要能够删除任何评论”或“用户B需要能够编辑任何博客帖子”的情况,您可能正在寻找模型级权限。

Django支持

对象级权限,但它们要求您使用第三方权限后端。它们以类似于模型级权限的方式工作,但不是在所有模型对象上“全有或全无”,而是仅用于单个对象。对象级权限有many packages out there,您选择的权限取决于权限后端需要的内容。

如果您遇到“用户A只需要删除他们是创建者的对象”或“用户B需要能够删除对象子集”的情况,您可能正在寻找对象级别权限。


您似乎对对象级权限感兴趣。