首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在DRF中使用django-import-export?

如何在DRF中使用django-import-export?
EN

Stack Overflow用户
提问于 2020-11-17 15:35:35
回答 1查看 283关注 0票数 0

安装import-export和从管理页面导入的结果我得到了以下错误

错误:

代码语言:javascript
复制
Traceback (most recent call last):
File "C:\ProgramData\Anaconda3\lib\site-packages\import_export\resources.py", line 639, in import_row
instance, new = self.get_or_init_instance(instance_loader, row)
File "C:\ProgramData\Anaconda3\lib\site-packages\import_export\resources.py", line 334, in get_or_init_instance
instance = self.get_instance(instance_loader, row)
File "C:\ProgramData\Anaconda3\lib\site-packages\import_export\resources.py", line 322, in get_instance
self.fields[f] for f in self.get_import_id_fields()
File "C:\ProgramData\Anaconda3\lib\site-packages\import_export\resources.py", line 322, in <listcomp>
self.fields[f] for f in self.get_import_id_fields()
KeyError: 'id'
代码语言:javascript
复制
from django.contrib import admin
from .models import Country
from import_export.admin import ExportActionModelAdmin, ImportExportMixin, ImportMixin

@admin.register(Country)
class CountryAdmin(ImportExportMixin, admin.ModelAdmin):
    list_display = [  "country_ID", "iso_code", "cname_en"  ]
EN

回答 1

Stack Overflow用户

发布于 2020-11-18 00:21:02

发生的情况是,代码失败是因为它试图使用一个字段来查找未在资源fields列表中声明的现有对象。

在导入期间,django-import-export将尝试将每个csv行与DB表中的现有条目进行匹配-如果找到这些条目,则将执行update操作,而不是create。这是为了避免创建重复项。

默认情况下,导入逻辑查找名为id的字段。但是,看起来您还没有在fields列表中声明这个字段,或者您的模型上可能没有'id‘字段。

您也许可以使用以下命令来解决此问题:

代码语言:javascript
复制
fields - ('id',)

这是假设在您的模型和数据源中有一个id字段。

docs更详细地介绍了这一点,为了理解正在发生的事情,有必要通读导入的文档化逻辑。此外,设置调试器和单步执行将节省理解任何导入问题的大量时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64871014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档