在管理视图中获取 DocumentChooserPanel

Getting the DocumentChooserPanel in an admin view

我创建了一个脚本来读取 Excel 文档、解析数据并在 Wagtail 中创建和保存新的 Page 实例。

当用户上传 Excel sheet、通过 DocumentChooserPanel 选择它并点击 运行.

我已经按照官方 Wagtail hooks guide 创建了新的管理视图,并将其与扩展 wagtailadmin/base.html 的模板连接起来。我不确定如何调用 DocumentChooserPanel 并将其显示在我的模板中。我也不完全确定如何使用所选文档并使其与我的脚本交互。关于我应该如何去做的任何指示?或者 resources/tutorials 我可以使用?

wagtailadmin/data_upload.html

{% extends "wagtailadmin/base.html" %}

{% block titletag %}Upload Data{% endblock %}

{% block content %}
<header class="merged nice-padding">
    <div class="row row-flush">
        <div class="col12">
            <h1>Data Upload Centre</h1>
            <h3>Upload data here based on Excel spreadsheet templates.</h3>
        </div>
    </div>
</header>
{% endblock %}

wagtail_hooks.py

@hooks.register('register_admin_menu_item')
def register_data_menu_item():
  return MenuItem('Data Upload', reverse('data_upload_view'), classnames='icon icon-code', order=10000)

def data_upload_view(request):
    template = "wagtailadmin/data_upload.html"
    context = {}
    return render(request, template, context)

@hooks.register('register_admin_urls')
def urlconf_time():
  return [
    url(r'^data-upload-centre/$', data_upload_view, name='data_upload_view'),
  ]

为清楚起见,复制评论中找到的解决方案作为答案。

DocumentChooserPanel 可能不适合这里。据我了解,您不需要保存文档(选择器所做的),而只需对其进行处理。我认为,香草 FileField 字段可能更合适。 Django 文档有一个关于如何做 basic file upload.

的例子

FWIW,根据文件大小,通过 FileField 上传的文档将为 kept in memory or saved as a temporary file