Select which fields to export in django-import-export(在django-import-export中选择要导出的字段)
本文介绍了在django-import-export中选择要导出的字段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在将django-import-export添加到我的应用程序的管理员中。
我想做的一件事是提供在选择要导出的字段的管理页面中进行选择的可能性。
我搜索了此主题,但只找到两个没有答案的问题。
是否可以添加从管理页面动态选择要导出的字段的可能性?
谢谢。
推荐答案
是的,这是可以实现的,但有点棘手。查看example application,并首先使其正常工作。
- 查看
BookAdmin
实现。 - 创建
ExportForm
的子类,该子类实现可以读取要导出的字段列表的表单构件。 - 添加可以接受
form_fields
作为kwarg的BookResource
构造函数,并将其另存为实例变量。 - 在
BookAdmin
中,重写get_export_resource_kwargs()
方法以从表单返回字段列表。 - 覆盖
BookResource
的get_export_fields()
以返回从表单提取的字段列表。 - 最后,您必须覆盖
export_action()
,以便它创建自定义表单的实例。(您实际上只需要覆盖line which instantiates the form-为此应该有一个get_export_form()
方法,这样就不需要覆盖整个方法。请随时提交公关。)
在移植到您自己的应用程序之前,使用示例应用程序试用此功能。
示例:
(基于admin.py
)
class BookResource(ModelResource):
class Meta:
model = Book
def __init__(self, form_fields=None):
super().__init__()
self.form_fields = form_fields
def get_export_fields(self):
return [self.fields[f] for f in self.form_fields]
class BookExportForm(ExportForm):
pass
# Add your logic to read fields from the form
class BookAdmin(ImportExportMixin, admin.ModelAdmin):
list_display = ('name', 'author', 'added')
list_filter = ['categories', 'author']
resource_class = BookResource
def get_export_resource_kwargs(self, request, *args, **kwargs):
formats = self.get_export_formats()
form = BookExportForm(formats, request.POST or None)
# get list of fields from form (hard-coded to 'author' for example purposes)
form_fields = ("author",)
return {"form_fields": form_fields}
这篇关于在django-import-export中选择要导出的字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:在django-import-export中选择要导出的字段


基础教程推荐
猜你喜欢
- 在同一图形上绘制Bokeh的烛台和音量条 2022-01-01
- Plotly:如何设置绘图图形的样式,使其不显示缺失日期的间隙? 2022-01-01
- 无法导入 Pytorch [WinError 126] 找不到指定的模块 2022-01-01
- 修改列表中的数据帧不起作用 2022-01-01
- 求两个直方图的卷积 2022-01-01
- PermissionError: pip 从 8.1.1 升级到 8.1.2 2022-01-01
- 使用大型矩阵时禁止 Pycharm 输出中的自动换行符 2022-01-01
- 在Python中从Azure BLOB存储中读取文件 2022-01-01
- 包装空间模型 2022-01-01
- PANDA VALUE_COUNTS包含GROUP BY之前的所有值 2022-01-01