6

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

从设置看来一切正常:

  • 已创建监护人特定表(guardian_groupobjectpermission、guardian_userobjectpermission)
  • 具有 GuardedModelAdmin 的模型在“历史记录”旁边显示“对象权限”功能
  • 它让我可以为用户/组分配“添加”、“更改”、“删除”权限

但是分配(而不是分配)权限对管理界面完全没有影响。每个用户都可以对所有对象做任何事情。

我试过了

user_can_access_owned_objects_only = True

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

我跟着另一个讨论在 ModelAdmin 中提出了这个建议

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

但这与上面的效果相似,它只限制了可见项。

我希望看到管理员“保存”和“删除”按钮(和功能)听 django-guardian。这是误会吗?还是我根本还没有走完整条路?

感谢您的任何提示!R

4

1 回答 1

5

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

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

于 2013-08-21T15:59:07.533 回答