Django 导入导出大部分情况都可以使用django-import-export
扩展,但是实际业务中经常需要导出子模型数据,比如导出订单同时需要导出订单商品信息。django-import-export
扩展默认不支持导出inline子模型,这时候需要自己实现resource的export方法:
自定义django-import-export
的export方法
class OrderResource(resources.ModelResource):
class Meta:
model = Order
def export(self, queryset=None, *args, **kwargs):
if queryset is None:
queryset = self.get_queryset()
ds = tablib.Dataset()
data = []
for order in queryset:
for item in order.items.all():
row = {
'order_id': order.id,
"item_id": item.idd,
}
data.append(row)
ds.dict = data
return ds