6

使用 Wagtails 模型管理员:

有什么方法可以禁用编辑和删除选项,只留下检查视图?

我能想到的一种可能的方法是扩展模板,删除编辑和删除按钮,然后以某种方式禁用编辑和删除视图。

有没有更清洁的方法?


编辑:感谢 Loic 的回答,我可以弄清楚。

PermissionHelper 源代码对于找出正确的覆盖方法也很有帮助。

仅显示检查视图的完整答案

class ValidationPermissionHelper(PermissionHelper):
    def user_can_list(self, user):
        return True  
    def user_can_create(self, user):
        return False
    def user_can_edit_obj(self, user, obj):
        return False
    def user_can_delete_obj(self, user, obj):
        return False

class ValidationAdmin(ModelAdmin):
    model = Validation
    permission_helper_class = ValidationPermissionHelper
    inspect_view_enabled = True
    [...]
4

1 回答 1

8

遗憾的是,您至少需要该模型(在角色中设置)的addchange或权限之一才能显示它。delete

解决方法是为您提供自定义权限助手类ModelAdmin并始终允许列表(并且仍然允许在角色中设置添加/更改/删除):

class MyPermissionHelper(wagtail.contrib.modeladmin.helpers.PermissionHelper):
    def user_can_list(self, user):
        return True  # Or any logic related to the user.

class MyModelAdmin(wagtail.contrib.modeladmin.options.ModelAdmin):
    model = MyModel
    permission_helper_class = MyPermissionHelper

modeladmin_register(wagtail.contrib.modeladmin.options.MyModelAdmin)
于 2017-03-15T22:17:05.870 回答