有没有一种简单的方法可以在不允许更改模型的情况下提供自定义django管理操作?

有没有一种简单的方法可以在不允许更改模型的情况下提供自定义django管理操作?,django,django-admin,Django,Django Admin,我对一个模型Foo有一个自定义操作,所有操作都已设置好,准备就绪,并完成了我的新权限 问题是,我的管理员需要can_change_foo权限来查看更改列表并执行自定义操作(我不想授予) 有没有一种更简单的方法可以在不重写模型列表管理视图的情况下进行设置?我可以想到一个可怕的黑客。。。显然,完全没有经过测试 您可以通过覆盖get\u actions()禁用所有其他操作,并且只允许自定义操作。然后可以完全禁用链接以编辑模型的各个实例。这将允许你做的是给你的用户can\u change\u foo权限

我对一个模型Foo有一个自定义操作,所有操作都已设置好,准备就绪,并完成了我的新权限

问题是,我的管理员需要can_change_foo权限来查看更改列表并执行自定义操作(我不想授予)


有没有一种更简单的方法可以在不重写模型列表管理视图的情况下进行设置?

我可以想到一个可怕的黑客。。。显然,完全没有经过测试

您可以通过覆盖
get\u actions()
禁用所有其他操作,并且只允许自定义操作。然后可以完全禁用链接以编辑模型的各个实例。这将允许你做的是给你的用户
can\u change\u foo
权限,知道他们唯一能执行的操作是你的

不漂亮。。。特别是关于不链接到编辑页面的部分


重新写入列表管理视图有那么糟糕吗?:-)

我最终覆盖了ModelAdmin类上的
changelist\u view()
方法,从django复制了默认值,只是注释掉了权限检查。列表(至少按照我的配置方式)没有用于编辑单个对象的链接,即使有,django也会在您尝试编辑单个对象时引发PermissionDenied。(因为我从来没有授予过can_change许可)


这是一种黑客行为,也有一些蒙基补丁,但在获得查看变更列表的单独权限之前,它工作得非常好。

PS.也许值得为Django功能请求创建一个记录单,内容如下:“可基于自定义权限启用的自定义管理操作”?此外-禁用链接的建议在Firefox中对我不起作用-复选框变为“链接”并打开编辑对象页面。