在不更改数据库的情况下导出Django import_export csv文件之前,可以通过自定义导出资源类来对其进行更改。
首先,需要创建一个自定义的导出资源类,继承自import_export.resources.ModelResource
。在该类中,可以重写before_export()
方法来对导出的数据进行修改。
from import_export import resources
class CustomResource(resources.ModelResource):
def before_export(self, queryset, *args, **kwargs):
# 在导出之前对数据进行修改
for obj in queryset:
# 对每个对象进行修改
obj.field = "modified value"
然后,在视图中使用自定义的导出资源类来导出csv文件。
from django.http import HttpResponse
from import_export import resources, fields
from import_export.admin import ExportMixin
class MyModelResource(resources.ModelResource):
# 定义需要导出的字段
field = fields.Field(attribute='field', column_name='Field')
class Meta:
model = MyModel
fields = ('field',)
class MyModelAdmin(ExportMixin, admin.ModelAdmin):
resource_class = MyModelResource
def export_csv(self, request, queryset):
# 创建自定义资源类的实例
resource = CustomResource()
# 调用before_export()方法对数据进行修改
resource.before_export(queryset)
# 导出csv文件
dataset = resource.export(queryset)
response = HttpResponse(dataset.csv, content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename="export.csv"'
return response
actions = [export_csv]
通过以上步骤,就可以在不更改数据库的情况下,对Django import_export导出的csv文件进行修改。
领取专属 10元无门槛券
手把手带您无忧上云