我对模型Foo进行了自定义操作所有设置并准备就绪,完成了我所做的新许可。
问题是,我的管理员需要can_change_foo权限才能查看更改列表并执行该自定义操作(我不想奖励)。
有没有更简单的方法来设置它而不重写模型列表管理视图?
答案 0 :(得分:0)
有一个可怕的黑客,我能想到......完全未经测试,显然......
您可以通过覆盖get_actions()
来禁用所有其他操作,并且只允许自定义操作。然后你可以follow T.Stone's suggestion here并完全禁用链接来编辑模型的各个实例。允许您这样做的是为您的用户提供can_change_foo
权限,因为他们知道他们能够执行的唯一操作就是您的。
不漂亮......尤其是关于不链接到编辑页面的部分......
是否重写了列表管理视图那么糟糕? : - )
答案 1 :(得分:0)
我最终覆盖了ModelAdmin类的changelist_view()
方法,从django复制了默认值,只是注释掉了权限检查。列表(至少我配置它的方式)没有编辑单个对象的链接,即使它确实如此,如果您尝试编辑单个对象,django会引发PermissionDenied。 (因为我从未授予can_change权限)。
这是一个黑客攻击和一些monkeypatching,但在获得查看更改列表的单独权限之前,它的效果非常好。