通过管理面板将数据导入数据库时​​出现 django-import-export 错误

问题描述

我正面临这个错误: 我正在使用 django-import-export 包。 问题是我在导入方面找不到太多文档,我希望能够使用它将数据导入我的我们的应用程序。

Line number: 1 - 'id'
1,2021-03-02 05:12:24,name,email,01999999999,text,161,303,76744,14,address,2020-11-26,dddd,SHD,PM,0
Traceback (most recent call last):
File "/Users/mikegreat/Documents/cop411/venv/lib/python3.9/site-packages/import_export/resources.py",line 497,in import_row
instance,new = self.get_or_init_instance(instance_loader,row)
File "/Users/mikegreat/Documents/cop411/venv/lib/python3.9/site-packages/import_export/resources.py",line 274,in get_or_init_instance
instance = self.get_instance(instance_loader,line 268,in get_instance
return instance_loader.get_instance(row)
File "/Users/mikegreat/Documents/cop411/venv/lib/python3.9/site-packages/import_export/instance_loaders.py",line 28,in get_instance
field = self.resource.fields[key]
KeyError: 'id'

这是我的 Excel 工作表文件

enter image description here

这是我的模型资源

class IncidenceReport(resources.ModelResource):

    class Meta:
        model = Incidence

        skip_unchanged = True
        report_skipped = True
        import_id_fields = ['id']
        fields = ('country__name','state__name','city__name','created_at','updated_at','reporter_name','reporter_email','reporter_phone','description','street_address','date_of_incidence','name_of_officers',)


class IncidenceAdmin(ImportExportModelAdmin,admin.ModelAdmin):
    resource_class = IncidenceReport
    autocomplete_fields = ("country","state","city")
    list_display = [field.name for field in Incidence._Meta.fields]
    search_fields = ['country__name','is_rep_needed','is_victim']
    list_filter = ('created_at','is_victim')

解决方法

这可能是因为您没有在字段列表中列出“id”(即 import_id_fields 值):

class IncidenceReport(resources.ModelResource):

    class Meta:
        model = Incidence

        skip_unchanged = True
        report_skipped = True
        import_id_fields = ['id']
        # declare 'id' in this tuple:
        fields = ('id','country__name',...)
,

我已经解决了这个问题。 问题是我在excel表上添加了id字段