Django使用django-import-export导入CSV时报KeyError: 'id'错误如何解决?
问题根因
- 你编写的
CapabilityResource资源类配置语法不符合django-import-export的规范:所有资源配置项(包括model、exclude、import_id_fields等)必须放置在内部Meta类中,你直接将配置属性写在资源类下,导致自定义配置完全未生效。 - 框架读取不到你声明的
exclude = ('id',)和自定义主键import_id_fields配置,依然默认尝试调用id字段作为导入的唯一标识,最终触发id字段不存在的键错误。
修复方案
替换你admin.py中的CapabilityResource代码为以下正确写法:
class CapabilityResource(resources.ModelResource): class Meta: model = Capability skip_unchanged = True report_skipped = True exclude = ('id',) import_id_fields = ('capscode', 'capsid', 'capsname', 'cfor', 'parent',)
额外注意事项
- 你CSV文件中的
parent字段存储的是父级数据的capsid值,请保持现有CSV从上到下的导入顺序(根节点在前,子节点在后),避免外键关联报错。 - 你的模型主键为自定义
capsid字段,CSV中提供的capsid值请确保不与数据库已有数据重复,避免主键冲突。
内容的提问来源于stack exchange,提问作者Naveen Sargam
相关产品推荐
相关产品推荐

