Трясогузка Модель 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)
Другие вопросы по тегам