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