添加对Django管理员更改、添加和操作的确认

django-admin-confirm的Python项目详细描述


Django管理员确认

coverage

AdminConfirmMixin是一个mixin,用于ModelAdmin添加用于更改、添加和操作的确认。在

Screenshot of Change Confirmation Page

Screenshot of Action Confirmation Page

它可以配置为在ModelAdmin上添加确认页:

  • 保存更改
  • 添加新实例
  • 执行操作

典型用法:

fromadmin_confirmimportAdminConfirmMixinclassMyModelAdmin(AdminConfirmMixin,ModelAdmin):confirm_change=Trueconfirmation_fields=['field1','field2']

安装

通过运行以下命令安装django admin confirm:

^{pr2}$

django.contrib.admin之前添加到项目设置中已安装的应用程序:

INSTALLED_APPS = [
    ...
    'admin_confirm',

    'django.contrib.admin',
    ...
]

注意,这个项目遵循Django的模板覆盖规则。 若要重写模板,您的应用程序应列在已安装的应用程序中admin_confirm之前。在

配置选项

属性:

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

请注意,设置confirmation_fields而不设置confirm_change或{}不会触发对更改/添加的确认。操作的确认不使用confirmation_fields选项。在

方法重写: 如果您想对确认进行更多控制,可以重写以下方法:

  • 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

使用

确认更改:

fromadmin_confirmimportAdminConfirmMixinclassMyModelAdmin(AdminConfirmMixin,ModelAdmin):confirm_change=Trueconfirmation_fields=['field1','field2']

这将确认对包括field1和/或field2的修改的更改。在

确认添加:

fromadmin_confirmimportAdminConfirmMixinclassMyModelAdmin(AdminConfirmMixin,ModelAdmin):confirm_add=Trueconfirmation_fields=['field1','field2']

这将确认add-on将field1和/或{}设置为非默认值。在

注意:confirmation_fields适用于两个添加/更改确认。在

确认操作:

fromadmin_confirmimportAdminConfirmMixinclassMyModelAdmin(AdminConfirmMixin,ModelAdmin):actions=["action1","action2"]defaction1(modeladmin,request,queryset):# Do something with the queryset@confirm_actiondefaction2(modeladmin,request,queryset):# Do something with the querysetaction2.allowed_permissions=('change',)

这将确认action2,而不是{}。在

操作确认将遵循allowed_permissionshas_xxx_permission方法。在

贡献与赞赏

欢迎投稿:)请随时:

  • 解决问题
  • 提出问题
  • 添加更多测试用例
  • 添加功能请求

也欢迎您的赏识:)请随时:

  • 启动项目
  • 打开一个问题来分享你的感谢

功能列表

这是未来可能添加的功能列表。其中一些可能在他们自己的包里更有意义。在

  • [x] 变更列表操作的确认
  • []更改列表页上的全局操作
  • []更改/查看页面上的实例操作
  • []操作日志(将操作添加到实例的历史记录中)
  • []将帮助工具提示/popover添加到任何字段以获取更多信息
  • []将帮助工具提示/popover/help按钮添加到变更列表上的管理操作
  • []从管理员运行脚本
  • []完成的操作摘要页面
  • []将顶部和底部区域添加到可为任何内容配置的实例页面

支持

如果您有任何问题,请通过提出问题让我们知道。在

许可证

该项目是在Apache2.0许可下授权的。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何使用spring注释将一个POJO对象注入另一个POJO?   javasocket读取超时异常。增加读取时间   java在创建数组列表实例的类时遇到问题,不断出现相同的错误   JavaJSF<p:dataTable>与Ajaxmethod的问题   java JPA存储库提高findAll()性能   mvc中未为html视图调用java Spring控制器   java如何获取用户对象| Spring Boot |控制器的HTML表单数据|   在eclipse链接jpa中迁移到java 8时间后,derby数据库中出现错误   java 安卓 sqlite接口可以在安卓外部使用吗   当我使用CTRL-ALT+L时,java Android studio正在重新格式化我的评论   java使用Spring呈现Url在jsp中加载div   dispose()Selenium中的java错误   java“找不到符号[method name]”,尽管方法已声明   java在文件中查找一行并将其删除   JeroMQ从Java客户端向Python服务器发送消息   java如何在鼠标悬停时在Tapestry 5.3.6调色板组件中显示选项文本的工具提示(标题)?   java从Google搜索页面获取所有搜索结果   文件请有人解释我这个JAVA代码的输出不要运行这个代码它会窃取密码