使用django-guardian的行级权限 - 对观察到的管理界面没有影响

sze*_*eta 6 django django-guardian

我已将django-guardian的行级权限添加到我的项目中.

从设置看起来一切正常:

  • 已创建Guardian特定表(guardian_groupobjectpermission,guardian_userobjectpermission)
  • 带有GuardedModelAdmin的模型显示"历史记录"旁边的"对象权限"功能
  • 它允许我为用户/组分配"添加","更改","删除"权限

但是,分配(分配不分配)权限对管理界面完全没有影响.允许每个用户对所有对象执行所有操作.

我试过了

user_can_access_owned_objects_only = True
Run Code Online (Sandbox Code Playgroud)

但这只会影响查看对象的能力.一旦用户看到它,他也可以更改并删除它.无论权限中设置了什么.

我跟随另一个在ModelAdmin中提出这个问题的讨论

def queryset(self, request):
    if request.user.is_superuser:
        return get_objects_for_user(user=request.user, perms=['change_program'], klass=Program) 
Run Code Online (Sandbox Code Playgroud)

但是这具有与上面类似的效果,它仅限制可见项目.

我希望看到管理员"保存"和"删除"按钮(和功能)听django-guardian.这是误会吗?或者我不是走在整条路上了吗?

谢谢你的提示![R

Fiv*_*ver 5

Guardian允许您创建自己的权限以分配给用户/对象组合,但基于这些对象权限限制对资源的访问仍需要您在视图中编写代码.因此,管理视图中没有自动强制执行.管理集成用于允许具有管理界面访问权限的用户管理对象级权限,请参阅监护人文档:

http://django-guardian.readthedocs.org/en/latest/userguide/admin-integration.html