在管理视图中获取DocumentChooserPanel

时间:2018-01-15 11:37:20

标签: wagtail

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

我希望当用户上传Excel工作表时,在Wagtail管理员中运行此脚本,通过DocumentChooserPanel选择它并点击运行。

我已按照官方Wagtail hooks guide创建新的管理视图,并使用扩展wagtailadmin/base.html的模板将其连接起来。我不确定如何调用DocumentChooserPanel并在我的模板中显示它。我也不完全确定如何使用所选文档并使其与我的脚本进行交互。有关如何进行此操作的任何指示?或者我可以使用的资源/教程?

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'),
  ]

1 个答案:

答案 0 :(得分:1)

为了清晰起见,将评论中的解决方案复制为答案。

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

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