You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 23:27:32