使用Django-import_export导出数据异常:仅导出dehydrated data而非指定字段
问题解决:Django-import_export 导出仅获取自定义脱水字段,未导出指定字段
你的代码存在两个关键问题导致导出不符合预期:
1. Meta类名大小写错误
Django-import_export 的配置类必须是大写的Meta,你写的class meta:(小写m)会被框架忽略,导致fields=('title','Brand')的配置完全不生效,框架只会处理你自定义的Brand字段,自然不会导出title。
2. 模型命名混淆(可选优化)
代码里用model = model这种写法极易产生命名冲突,建议替换成实际的模型类名(比如你的模型如果叫Member,就写model = Member)。
修改后的代码:
class MemberResource(resources.ModelResource): Brand = Field() # 注意这里是大写的Meta class Meta: # 替换成你实际的模型类名,比如Member model = Member fields = ('title', 'Brand') def dehydrate_Brand(self, obj): return str(obj.Brand.title) class ModelAdmin(ImportExportModelAdmin): resource_class = MemberResource list_display = ['title','Model_code','Chipset','chipset_description','Brand','categories'] search_fields = ['title','Model_code','Chipset',] fields = ('title','Model_code','Chipset','chipset_description','image','Brand','Cat') # 同样替换成实际的模型类名 admin.site.register(Member, ModelAdmin)
额外补充:
- 自定义字段
Brand需要确保你的模型实例确实有Brand属性,且Brand对象存在title字段,避免脱水方法运行时报错。 - 如果导出仍有异常,可以尝试在资源类的
Meta里添加export_order明确指定字段顺序:class Meta: model = Member fields = ('title', 'Brand') export_order = ('title', 'Brand')
内容的提问来源于stack exchange,提问作者Malik Naveed
相关产品推荐
相关产品推荐

