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 不会确认内联上的任何更改
声明:如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。None#python87.com