2

我是 django-tables2 的重度用户,我曾想过向 django-table 添加一个通用扩展:我希望允许用户能够将所有表数据导出到 excel(使用 xlwt)或 csv单击位于桌子附近某处的按钮。

现在,我以非通用方式实现了这一点,这意味着我在模板中包含了一个 POST 表单和一个按钮,并添加了一个检查以查看是否单击了填充表格的视图。如果单击该按钮,则返回 xls 而不是普通模板。此外,我实现了一个通用函数,它获取一个 django-table2 表(任何表)并将其转换为 xlwt 表(以便将其放入工作簿)。

这工作正常,但由于我将在我的所有表格中使用此按钮,我不想将导出表单和按钮添加到我的所有包含表格的 html 模板中。此外,我不想将 POST 检查添加到我的所有视图中!这绝对不是 DRY :(

理想情况下,我希望有一个类,假设它是 ExportTable,它将扩展 django-tables2 的 Table 类并且可以用作替代品 - 当我使用 ExportTable 作为基类创建我的表时,然后按钮和该视图将具有导出表所需的组件。据我所知,这是不可能的:(

有人可以向我建议我应该以哪种方式扩展 django-tables2 以便能够以最干燥的方式添加“导出”功能?这意味着我只能在我的模板中使用 {% render_table table %} 标记(或它的扩展),而无需在我的视图中添加检查以查看用户是否单击了导出按钮(以及当然不需要添加额外的视图和 url 路由来处理它)。通用类视图是要走的路吗?

我会接受最干燥和最完整的(我想有一些带有评论的源代码)回答:)

4

2 回答 2

2

我使用django-tables2-reports将 table2 数据导出到 csv 和 xls。我在 mo 时遇到了 xls 问题(在此处报告),但我确信很快就会出现解决方案。

于 2013-01-29T19:04:33.570 回答
0

对于任何偶然发现这个问题的人,Django-tables2 有一个部分专门用于简单地使用tablib包以各种格式导出。(自 v1.8.0 起存在)

https://django-tables2.readthedocs.io/en/latest/pages/export.html

...

现在,如果您将 _export=csv 附加到查询字符串,浏览器将下载一个包含您的数据的 csv 文件。支持的导出格式有:

csv、json、乳胶、ods、tsv、xls、xlsx、yml

于 2019-08-27T21:30:00.043 回答