Python Django Auth:基于模型的类别的权限
我的应用程序中有产品和公司类。现在,我希望有人管理的产品,有FK的某些公司。例如: 公司有:福和巴 产品有:苹果(由Foo,ie.FK to it生产)、梨和李子(由Bar生产) johndoe@email.com用户是否拥有Foo,以及janedoe@email.com是一个用户拥有的酒吧。我想为John设置priv,以便能够将产品添加到Foo,删除并编辑它们,但仅限于与Foo相关的产品Python Django Auth:基于模型的类别的权限,python,django,django-admin,Python,Django,Django Admin,我的应用程序中有产品和公司类。现在,我希望有人管理的产品,有FK的某些公司。例如: 公司有:福和巴 产品有:苹果(由Foo,ie.FK to it生产)、梨和李子(由Bar生产) johndoe@email.com用户是否拥有Foo,以及janedoe@email.com是一个用户拥有的酒吧。我想为John设置priv,以便能够将产品添加到Foo,删除并编辑它们,但仅限于与Foo相关的产品 我该怎么做呢?我真的很喜欢django guardian(https://github.com/lukas
我该怎么做呢?我真的很喜欢django guardian(https://github.com/lukaszb/django-guardian.git)对于这种东西。它为Django提供对象级权限 我处理您的具体问题的方法如下 定义允许公司所有者完成的操作
class Meta:
permissions = [('can_add', 'Add product to company'), etc...]
接下来,我将通过添加到save()中,在创建新公司时为每个公司创建一个组
在这个示例中,您将拥有Foo_组和Bar_组,以及分配给这些组的那些对象的权限
现在,您所要做的就是从不同的公司组添加/删除用户,以授予他们与这些对象关联的权限
最后一个组件是检查相关操作的权限。这可以在每个操作的适当视图中完成,例如添加、删除等
我更喜欢基于类的视图,因为使用mixin进行权限检查非常好。Guardian附带了一个开箱即用的许可证RequiredMixin,但通常一些定制的东西适用于更复杂的情况
def save():
# Create a permission group named %s_group % company_name
# assign(permission, group) - add the permissions to this group.