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

Django Import-Export一对一字段导入报错:KeyError: 'id'

Django-import-export导入数据触发KeyError: 'id'问题

使用版本

  • Python 3.10.4
  • Django 4.0.6
  • Django-import-export 2.8.0

问题描述

向Django应用导入演示数据时,持续出现KeyError: 'id'错误,多种数据格式(如yaml)均触发该问题。

相关代码

models.py

class Reservation(models.Model):
    reservation = models.OneToOneField(Vehicle, on_delete=models.CASCADE, primary_key=True,)
    delivered = models.BooleanField('Delivered', default=False)
    date_reserved = models.DateTimeField('date reserved', default=datetime.datetime.now)
    ...

admin.py

class ReservationResource(resources.ModelResource):
    class Meta:
        model = Reservation
        exclude = ('id',)
        import_id_fields = ('reservation',)
        fields = (
            'reservation',
            'delivered',
            'date_reserved',
            ...
        )
class ReservationImportExport(ImportExportModelAdmin):
    resource_class: ReservationResource
@admin.register(Reservation)
class ReservationAdmin(SimpleHistoryAdmin, ReservationImportExport):
    fields = ["delivered", "date_reserved", ...]

demo-reservations.yaml

- reservation: 50001
   delivered: False
   date_reserved: 7/15/2022T00:00:00+00:00
   ...

报错信息

Traceback (most recent call last):
File "c:\Users\...\lib\site-packages\import_export\resources.py", line 661, in import_row
instance, new = self.get_or_init_instance(instance_loader, row)
File "c:\Users\...\lib\site-packages\import_export\resources.py", line 353, in get_or_init_instance
instance = self.get_instance(instance_loader, row)
File "c:\Users\...\lib\site-packages\import_export\resources.py", line 340, in get_instance
import_id_fields = [
File "c:\Users\...\lib\site-packages\import_export\resources.py", line 341, in <listcomp>
self.fields[f] for f in self.get_import_id_fields()
KeyError: 'id'

已尝试的解决措施

  • 移除Admin注册中的SimpleHistoryAdmin
  • 调试发现代码未正确加载import_id_fields配置,手动修改参数后可继续执行
  • 将模型中的OneToOneField替换为ForeignKey

后续排查

查阅官方文档及社区资料,按说明配置exclude和import_id_fields应该能解决该问题,但实际测试后问题依旧。目前怀疑是django-import-export包的bug,已提交相关问题反馈。

内容的提问来源于stack exchange,提问作者JoeF

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 14:15:40