在django-import-export中选择要导出的字段

Select which fields to export in django-import-export(在django-import-export中选择要导出的字段)

本文介绍了在django-import-export中选择要导出的字段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在将django-import-export添加到我的应用程序的管理员中。

我想做的一件事是提供在选择要导出的字段的管理页面中进行选择的可能性。

我搜索了此主题,但只找到两个没有答案的问题。

是否可以添加从管理页面动态选择要导出的字段的可能性?

谢谢。

推荐答案

是的,这是可以实现的,但有点棘手。查看example application,并首先使其正常工作。

  1. 查看BookAdmin实现。
  2. 创建ExportForm的子类,该子类实现可以读取要导出的字段列表的表单构件。
  3. 添加可以接受form_fields作为kwarg的BookResource构造函数,并将其另存为实例变量。
  4. BookAdmin中,重写get_export_resource_kwargs()方法以从表单返回字段列表。
  5. 覆盖BookResourceget_export_fields()以返回从表单提取的字段列表。
  6. 最后,您必须覆盖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中选择要导出的字段

基础教程推荐