使用django-import-export:如何自定义导出Excel文件的字段

n3h0vuf2  于 2023-02-14  发布在  Go
关注(0)|答案(1)|浏览(304)

我刚开始使用Django,我使用的是django-import-export包,我试着自定义我的Django管理面板in this page来选择哪些字段要导出到excel文件。
这是我的管理模型

class CompanyAdmin(ImportExportMixin, admin.ModelAdmin):

        model = Company
        
        resource_classes = [CompanyResource]
        
        list_display = [
            "name",
            "uuid",
        ]
        
        fields = [
            "name",
            "email",
        ]
        
        def get_export_resource_kwargs(self, request, *args, **kwargs):
            formats = self.get_export_formats()
            form = CompanyExportForm(formats, request.POST or None)
            form_fields = ("name", "email", ) 
            return {"form_fields": form_fields}

这是我的模型资源

class CompanyResource(resources.ModelResource):
    class Meta:
        model = Company
    
    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 CompanyExportForm(ExportForm):

    # what should i write here? is this the place that i should write the custom code eg: checkboxes where user have the options to export the 'name` or 'email' fields ??

为了达到同样的效果,我试着使用和这个post中相同的方法。然而,我一直被卡住了。
更新:

  • 对于那些最终来到这里的人:请看这个blog post:这是一种不同解决方案,尽管可以做一些改进
zc0qhyus

zc0qhyus1#

如果要定义导出哪些字段,请参考this post,这意味着只导出那些字段,用户不能选择,实现起来相对简单。
但是你似乎希望用户能够选择UI中的字段,那么它就更复杂了,并且将涉及更多的定制。你链接到的answer是起点。
必须有一些UI元素,用户可以在其中选择要导出的字段(例如,一些多选小部件),然后在POST时,您必须读取这些字段的id,然后将其馈送到export()方法中。
如果你是Django的新手,实现Django需要做一些工作,而且学习曲线会很陡峭。如果你能找到一种“干净”的方式来实现它,这样未来的用户就可以实现它,我们会考虑PR

相关问题