wagtail - 有没有一种简单的方法可以将复制按钮添加到 wagtail 中非页面模型的 IndexListing 中?
问题描述
我有一个片段模型,我正在使用 ModelAdmin 在 Wagtail 中创建、编辑和列出。我想创建一个复制功能,我可以看到 wagtail 支持开箱即用的Page
对象:
在我编写自定义代码来执行此操作之前,我想我会问是否有任何方法可以在 Wagtail 中轻松执行此操作。我没有找到任何可以轻松添加更多按钮的钩子,虽然我确实找到了 modeladmin-list-display-add-buttons,但它似乎只允许我更改默认编辑和删除按钮的位置。
解决方案
有可能实现这一点。但是,它将需要自定义代码,以及不同位置的各种覆盖和添加。以下是一些可以帮助您的步骤,其中包含一些指向 wagtailmenus 扩展中的示例代码的链接,它们可以执行此操作:
添加自定义视图:
- 创建一个自定义
CopyView
视图(子类化wagtail.contrib.modeladmin.views.EditView
可能是您最好的起点)。为了获得灵感,您可能想看看我为 wagtailmenus 创建的一个:https ://github.com/rkhleics/wagtailmenus/blob/master/wagtailmenus/views.py#L141 - 通过添加实例化自定义视图的方法,将视图与您的
ModelAdmin
类集成。copy_view()
例如: https ://github.com/rkhleics/wagtailmenus/blob/master/wagtailmenus/modeladmin.py#L78 - 覆盖你的
ModelAdmin
类的get_admin_urls_for_registration()
方法,使视图可以通过 URL 访问。例如:https ://github.com/rkhleics/wagtailmenus/blob/master/wagtailmenus/modeladmin.py#L82
让按钮显示在列表中:
- 通过子类化创建自定义
ButtonHelper
类wagtail.contrib.modeladmin.helpers.ButtonHelper
。 - 向其中添加一个
copy_button()
方法,该方法可以提供创建按钮所需的所有详细信息。例如:https ://github.com/rkhleics/wagtailmenus/blob/master/wagtailmenus/modeladmin.py#L38/ get_buttons_for_obj()
根据用户的权限(例如https://github.com/rkhleics/wagtailmenus/blob/master/wagtailmenus/modeladmin.py#L49)覆盖在列表中输出复制按钮的方法以及其他按钮- 最后,通过更改属性以引用您的自定义类,让您的
ModelAdmin
类使用您的自定义而不是默认类。ButtonHelper
button_helper_class
如果您想更多地了解 中的所有各种类wagtail.contrib.modeladmin
,我建议您阅读官方 Wagtail 文档中的modeladmin 自定义入门页面。
推荐阅读
- python - 根据日期获取列表的最后一个唯一元素
- lua - Lua解剖函数定义
- python - django 中基于类的视图上的 login_required 装饰器
- position - Redshift Query Syntax 错误(使用 SQL Workbench):有没有简单的方法可以直接进入错误中提到的“位置”?
- node.js - 项目双嵌套数组mongodb
- events - wxpython GUI 应用程序在操作后未触发事件,如何排除故障?
- excel - Excel:基于范围的条件格式
- entity-framework-core - EntityFrameworkCore:DeleteBehavior 选项太多
- javascript - 滚动显示 div 在页面刷新时不起作用/如果它尚未运行
- node.js - 如何在猫鼬聚合后将数组中的对象转换为项目数组