Wagtail ModelAdmin 只读
Wagtail ModelAdmin read only
使用 Wagtails Modeladmin:
有什么方法可以禁用只保留检查视图的编辑和删除选项吗?
我能想到的一种可能的方法是扩展模板,删除编辑和删除按钮,然后以某种方式禁用编辑和删除视图。
有没有更干净的方法?
编辑:多亏了 Loic 的回答,我才明白。
PermissionHelper
source code 也非常有助于找出正确的覆盖方法。
仅显示检查视图的完整答案
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
[...]
遗憾的是,您需要对该模型(在角色中设置)的 add
、change
或 delete
权限才能显示。
解决这个问题的方法是为您的 ModelAdmin
提供 custom permission helper class 并始终允许列出(并且仍然允许在角色中设置 add/change/delete):
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)
使用 Wagtails Modeladmin:
有什么方法可以禁用只保留检查视图的编辑和删除选项吗?
我能想到的一种可能的方法是扩展模板,删除编辑和删除按钮,然后以某种方式禁用编辑和删除视图。
有没有更干净的方法?
编辑:多亏了 Loic 的回答,我才明白。
PermissionHelper
source code 也非常有助于找出正确的覆盖方法。
仅显示检查视图的完整答案
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
[...]
遗憾的是,您需要对该模型(在角色中设置)的 add
、change
或 delete
权限才能显示。
解决这个问题的方法是为您的 ModelAdmin
提供 custom permission helper class 并始终允许列出(并且仍然允许在角色中设置 add/change/delete):
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)