【问题标题】:Export a File (CSV, PDF) From Django Admin Form Inputs从 Django 管理表单输入中导出文件(CSV、PDF)
【发布时间】:2017-12-09 04:07:26
【问题描述】:

所有在 Django 管理员中,我想输入与生成报告相关的表单字段。您希望报告中包含的字段:报告名称、报告类型、开始和结束日期、报告字段等。

如何获取这些输入,从请求中获取输入,将这些输入传递给 API(在后台),然后处理它(以类似队列的方式),最后创建一个 CSV 或 PDF 以供下载?

我可以创建管理模型表单,并且我认为在管理中提交表单时获取输入,然后我想我只需将这些输入传递给我的其他 API 代码进行处理...

我的问题是:

  1. 当第三方API处理请求时,有没有特殊的方法来处理这个延迟时间?
  2. 我将在管理界面中的何处以及如何返回结果(CSV 或 PDF)? /change/ 页面?

这方面有最佳实践吗?在与管理员打交道时,我找不到这样的例子。我对 Python 并不陌生,但对 Django 有点陌生。

【问题讨论】:

    标签: python django csv pdf django-admin


    【解决方案1】:

    没有人可能会回答。因此,我将分享我的高级通用解决方案。

    1. 您需要设置 celery.py 并修改您的 __init__.py,就像它在 celery 文档中显示的那样。关键“gotcha”是他们放置“proj”的位置,您应该输入项目的实际名称,而不是“proj”。
    2. 在您的 admin.ModelAdmin 类中,覆盖 save_model(self, request, obj, form, change) 以捕获从管理表单提交的表单数据。
    3. 使用表单输入并传递给当前应用程序中tasks.py 中的芹菜任务函数。例如:get_report.delay(name, start, end, type)。请注意 .delay 部分,因为它允许它在后台运行,而无需在提交表单后在屏幕上等待。
    4. save_model(...),最后还是要调用super().save_model(request, obj, form, change)
    5. 最重要的一步——你已经打开了两个终端! 1 用于运行 python manage.py runserver (例如),另一个用于启动 celery worker。我在 Windows 上并且 Windows 有问题,因此非并发解决方案是 celery -A scorecard worker --pool=solo -l info(启动工作人员 - 您在终端中输入),或者,您可以安装 eventlet 并使用 eventlet 作为 --pool=eventlet--pool=solo

    【讨论】:

      猜你喜欢
      • 2017-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-16
      • 1970-01-01
      • 2014-07-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多