django-admin-confirm主要是AdminConfirmMixin,它是 ModelAdmin 的混合体,用于添加对更改、添加和操作的确认。它可以配置为在 ModelAdmin 上添加一个确认页面:

  • 保存更改

  • 添加新实例

  • 执行操作

1.安装

pip install django-admin-confirm

2.INSTALLED_APPS注册

在settings.py的INSTALLED_APPS注册admin_confirm,注意要在'django.contrib.admin'之前注册

INSTALLED_APPS = [
    ...
    'admin_confirm',
    'django.contrib.admin',
    ...
]

配置选项

环境变量

缓存用于缓存文件以进行确认。在 ModelAdmin 上提交更改/添加时,如果需要确认,文件将被缓存,直到所有验证通过并收到确认。

ADMIN_CONFIRM_CACHE_TIMEOUT 默认值:1000
ADMIN_CONFIRM_CACHE_KEY_PREFIX 默认值:admin_confirm__file_cache

属性

confirm_change Optional[bool] - 决定更改是否应触发确认
confirm_add Optional[bool] - 决定添加是否应触发确认confirmation_fields Optional[Array[string]] - 设置哪些字段应触发添加/更改确认。对于添加新实例,仅当字段设置为非默认值时,该字段才会触发确认。
change_confirmation_template Optional[string] - 用于更改/添加的自定义 html 模板的路径
action_confirmation_template Optional[string] - 用于操作的自定义 html 模板的路径

请注意,没有设置的设置不会触发更改/添加的确认。操作确认不使用该选项。

方法覆盖:

如果想要对确认进行更多控制,可以覆盖以下方法:

get_confirmation_fields(self, request: HttpRequest, obj: Optional[Object]) -> List[str]
render_change_confirmation(self, request: HttpRequest, context: dict) -> TemplateResponse
render_action_confirmation(self, request: HttpRequest, context: dict) -> TemplateResponse

用法

确认更改

    from admin_confirm import AdminConfirmMixin

    class MyModelAdmin(AdminConfirmMixin, ModelAdmin):
        confirm_change = True
        confirmation_fields = ['field1', 'field2']

确认对更改的更改,包括对field1/field2的修改。

确认添加:

    from admin_confirm import AdminConfirmMixin

    class MyModelAdmin(AdminConfirmMixin, ModelAdmin):
        confirm_add = True
        confirmation_fields = ['field1', 'field2']

确认 add on 将该集field1和/或field2添加到非默认值。

确认操作

    from admin_confirm import AdminConfirmMixin, confirm_action

    class MyModelAdmin(AdminConfirmMixin, ModelAdmin):
        actions = ["action1", "action2"]

        def action1(modeladmin, request, queryset):
            # Do something with the queryset

        @confirm_action
        def action2(modeladmin, request, queryset):
            # Do something with the queryset

        action2.allowed_permissions = ('change',)

动作确认将尊重allowed_permissions和has_xxx_permission方法。

AdminConfirmMixin 不会确认内联上的任何更改

项目github:https://github.com/trangpham/django-admin-confirm/

声明:如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。None#python87.com