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

Django import_export导入报KeyError: 'id',自定义主键CVR_nummer的问题

解决Django import_export导入自定义主键模型时的KeyError: 'id'问题

问题根源在于django-import-export的默认ModelResource会自动尝试映射id字段,但你的Koereskoler模型用CVR_nummer替代了默认的id主键,导入时插件找不到id字段就触发了KeyError。

解决方案:自定义ModelResource指定字段和主键

在admin.py中创建自定义的ModelResource类,明确指定要处理的字段以及模型的主键字段,让插件不再依赖默认的id:

from import_export import resources
from import_export.admin import ImportExportModelAdmin
from django.contrib import admin
from .models import Koereskoler

# 自定义资源类
class KoereskolerResource(resources.ModelResource):
    class Meta:
        model = Koereskoler
        # 列出所有需要导入/导出的字段,必须包含主键CVR_nummer
        fields = (
            'CVR_nummer', 'startdato', 'ophoersdato', 'navn', 'adresse',
            'postnr', 'by', 'virksomhedsform', 'hovedbranche', 'telefonnr',
            'email', 'reklamebeskyttet', 'pris', 'url', 'owner'
        )
        # 指定模型的主键字段
        pk_field = 'CVR_nummer'

class KoereskoleAdmin(ImportExportModelAdmin, admin.ModelAdmin):
    # 关联自定义资源类
    resource_class = KoereskolerResource
    # 你的其他admin配置...

admin.site.register(Koereskoler, KoereskoleAdmin)

说明

  • fields参数明确列出所有需要处理的字段,确保插件只关注这些字段,不会去寻找不存在的id。
  • pk_field指定模型的主键为CVR_nummer,让插件知道用这个字段来识别唯一记录,替代默认的id。
  • 修改后,导出的文件会保持原有字段结构,导入时插件会正确匹配CVR_nummer作为主键,不再触发id相关错误。

注意:如果导入文件包含owner字段,需确保对应的User记录已存在于数据库中(比如你的默认配置是id=1的用户),否则会触发外键关联错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 11:06:34