Трясогузка Модель Admin только для чтения
Использование трясогузки Modeladmin:
Есть ли способ отключить редактирование и удаление параметров, оставляя только просмотр?
Возможный подход, который я могу придумать, - это расширение шаблона, удаление кнопок редактирования и удаления, а затем каким-то образом отключить представление редактирования и удаления.
Есть ли более чистый подход?
РЕДАКТИРОВАТЬ: Благодаря ответу Лоика я мог понять.
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
[...]
1 ответ
К сожалению, вам нужен по крайней мере один из add
, change
или же 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)