想象一下这些模型:
User
有很多Bucket
个,Bucket
个Item
多个django-guardian
。用户A只能看到自己的存储桶和项目列表。现在,我想让用户B看到用户的A桶而不是项目。这是否可以使用Django内置权限系统,或者我需要{{1}}这样的目的?
我是django的新手,我有点困惑。
答案 0 :(得分:3)
Django在模型方面有两种不同级别的权限:模型级别和对象级别。
模型级权限是Django中的默认类型,它们由默认权限后端强制执行。它们在“全有或全无”的基础上工作,因此用户可以对模型的所有对象具有权限(例如删除),或者不具有权限。
如果您遇到“用户A需要能够删除任何评论”或“用户B需要能够编辑任何博客帖子”的情况,您可能正在寻找模型级权限。
Django支持对象级权限,但它们要求您使用第三方权限后端。它们以类似于模型级权限的方式工作,但不是在所有模型对象上“全有或全无”,而是仅用于单个对象。对象级权限有many packages out there,您选择的权限取决于权限后端需要的内容。
如果您遇到“用户A只需要删除他们是创建者的对象”或“用户B需要能够删除对象子集”的情况,您可能正在寻找对象级别权限。
您似乎对对象级权限感兴趣。