首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KeyError:'id‘django-import-export

KeyError:'id‘django-import-export
EN

Stack Overflow用户
提问于 2021-09-20 19:25:27
回答 1查看 190关注 0票数 0

我不知道在我的代码中哪里错了,请帮帮我,我已经浪费了很多时间……谢谢_/\_

代码语言:javascript
复制
admin.py
from import_export import resources
from import_export.admin import ImportExportModelAdmin

class CapabilityResource(resources.ModelResource):
    model = Capability
    skip_unchanged = True
    report_skipped = True
    exclude = ('id',)
    import_id_fields = ('capscode', 'capsid', 'capsname', 'cfor', 'parent',)



@admin.register(Capability)
class CapabilityAdmin(ImportExportModelAdmin):
    resource_class = CapabilityResource
    fields = ['capscode', 'capsname', 'cfor', 'parent']
    list_display = ['capscode', 'capsname', 'cfor', 'parent']
    list_display_links = ['capscode', 'capsname']


models.py
class Capability(models.Model):  
    CFOR_CHOICES = [('WEB', 'WEB'), ('PORTLET', 'PORTLET'), ('REPORT', 'REPORT'), ('MOB', 'MOB')]
    capsid      = models.AutoField(primary_key=True, auto_created=True, editable=False)
    capscode    = models.CharField(_('caps'), max_length=50)
    capsname    = models.CharField(_('includes'), max_length=1000, default = None, blank=True, null=True)
    parent      = models.ForeignKey('self', on_delete=models.RESTRICT, db_column='parent', null=True, blank=True, related_name='children')
    cfor        = models.CharField(_('cfor'), max_length=10, default='WEB', choices=CFOR_CHOICES)
    clientid    = models.ForeignKey('onboarding.Bt',  null=True, blank=True, on_delete = models.RESTRICT, db_column='clientid')


csv data:
capscode    capsid  capsname        cfor    parent
NONE            1   NONE            WEB 
DASHBOARDS      2   DASHBOARDS      WEB     1
RP_MONITORING   3   RP MONITORING   WEB     2
FACILITY        4   FACILITY        WEB     2

版本:

django-import-export==2.6.0

Django==3.2.4

python=3.8.10

错误:行号:1- 'id‘NONE,1,NONE,WEB,Traceback (最近一次调用):文件"/home/xyz/abc/envs/intelliwiz_env/lib/python3.8/site-packages/import_export/resources.py",行650,在行实例中,"/home/xyz/abc/envs/intelliwiz_env/lib/python3.8/site-packages/import_export/resources.py",= self.get_or_init_instance(instance_loader,import_row )文件行342,在instance = self.get_instance(instance_loader,get_instance )文件行329,in import_id_fields =[ File "/home/xyz/abc/envs/intelliwiz_env/lib/python3.8/site-packages/import_export/resources.py",行330,in self.fieldsf get_or_init_instance f in self.get_import_id_fields() KeyError:'id‘

行号:2- 'id‘仪表板,2,仪表板,WEB,1回溯(最近调用):文件新650行,在行实例中,"/home/xyz/abc/envs/intelliwiz_env/lib/python3.8/site-packages/import_export/resources.py",= self.get_or_init_instance(instance_loader,instance_loader)文件新行342,在instance = self.get_instance(instance_loader,get_instance )文件行329,in import_id_fields =[ File "/home/xyz/abc/envs/intelliwiz_env/lib/python3.8/site-packages/import_export/resources.py",行330,in self.fieldsf get_or_init_instance f in self.get_import_id_fields() KeyError:'id‘

行号:3- 'id‘RP_MONITORING,3,RP监控,WEB,2回溯(最近一次调用):文件"/home/xyz/abc/envs/intelliwiz_env/lib/python3.8/site-packages/import_export/resources.py",行650,在import_row实例中,新= self.get_or_init_instance(instance_loader,行)文件行342,在instance = self.get_instance(instance_loader,get_instance )文件行329中,在import_id_fields =[ File "/home/xyz/abc/envs/intelliwiz_env/lib/python3.8/site-packages/import_export/resources.py",行330,in self.fieldsf get_or_init_instance f in self.get_import_id_fields() KeyError:'id‘

行号:4- 'id‘工具,4,工具,WEB,2回溯(最近调用):文件"/home/xyz/abc/envs/intelliwiz_env/lib/python3.8/site-packages/import_export/resources.py",行650,在行实例中,"/home/xyz/abc/envs/intelliwiz_env/lib/python3.8/site-packages/import_export/resources.py",= self.get_or_init_instance(instance_loader,import_row )文件行342,在instance = self.get_instance(instance_loader,get_instance )文件行329中,在import_id_fields =[ File "/home/xyz/abc/envs/intelliwiz_env/lib/python3.8/site-packages/import_export/resources.py",行330,in self.fieldsf get_or_init_instance f in self.get_import_id_fields() KeyError:'id‘

EN

回答 1

Stack Overflow用户

发布于 2021-10-13 03:21:36

尝试将您的CapabilityResource更改为以下内容

代码语言:javascript
复制
class CapabilityResource(resources.ModelResource):
  class Meta:
    model = Capability
    skip_unchanged = True
    report_skipped = True
    exclude = ('id')
    fields=('id','capscode','capsid','capsname', 'cfor', 'parent')

基本上,字段列表需要包含"id“字段,该字段将用于确定现有的数据库行。

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

https://stackoverflow.com/questions/69259827

复制
相关文章

相似问题

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