django-import-export“错误:行号:1 - 'id'“-“KeyError:id”

kmpatx3s  于 2023-08-08  发布在  Go
关注(0)|答案(1)|浏览(304)

我有一个丹麦驾校的模型。当我试图导入它们的形式和.xlsx文件,我得到以下错误:

Errors
Line number: 1 - 'id'
43959328, 2023-03-20, None, Autoskolen.com ApS, Langgade 3 - 4262 Sandved, 4262, Sandved, Anpartsselskab, 855300 Køreskoler, None, None, Nej, None, None, 1
Traceback (most recent call last):
File "C:\PATH\lib\site-packages\import_export\resources.py", line 713, in import_row
instance, new = self.get_or_init_instance(instance_loader, row)
File "C:\PATH\lib\site-packages\import_export\resources.py", line 375, in get_or_init_instance
instance = self.get_instance(instance_loader, row)
File "C:\PATH\lib\site-packages\import_export\resources.py", line 362, in get_instance
import_id_fields = [
File "C:\PATH\lib\site-packages\import_export\resources.py", line 363, in <listcomp>
self.fields[f] for f in self.get_import_id_fields()
KeyError: 'id'

字符串
我正在使用import_export包进行导入。
我的代码看起来像这样:
网址:admin.py

from import_export.admin import ImportExportModelAdmin
from django.contrib import admin
from .models import Koereskoler #Post

class KoereskoleAdmin(ImportExportModelAdmin, admin.ModelAdmin):
    ...

admin.site.register(Koereskoler, KoereskoleAdmin)


网址:models.py

from django.db import models
from datetime import date
from django.core.validators import RegexValidator
from django.utils import timezone
from django.contrib.auth.models import User

def default_user():
    return User.objects.get(id=1).pk

class Koereskoler(models.Model):
    **CVR_nummer = models.IntegerField(unique=True, primary_key=True, default=00000000)**
    startdato = models.DateField(default=timezone.now)
    ophoersdato = models.CharField(max_length=255, blank=True, null=True)
    navn = models.CharField(max_length=255)
    adresse = models.CharField(max_length=255)
    postnr = models.IntegerField(default=0000)
    by = models.CharField(max_length=50, null=True)
    virksomhedsform_type_choices = (
        ('Enkeltmandsvirksomhed', 'Enkeltmandsvirksomhed'),
        ('Anpartsselskab', 'Anpartsselskab'),
        ('Aktie', 'Aktie'),
        ('Interessentskab', 'Interessentskab'),
        ('Andelsselskab (-forening) med begrænset ansvar', 'Andelsselskab (-forening) med begrænset ansvar'),
        ('Selskab med begrænset ansvar', 'Selskab med begrænset ansvar'),
        ('Personligt ejet Mindre Virksomhed', 'Personligt ejet Mindre Virksomhed'),
        ('Forening', 'Forening'),
        ('Forening med begrænset ansvar', 'Forening med begrænset ansvar'),
    )
    virksomhedsform = models.CharField(blank=True, choices=virksomhedsform_type_choices, max_length=255)
    hovedbranche = models.CharField(max_length=50,default=855300)
    telefonnr = models.CharField(max_length=20, blank=True, null=True, validators=[RegexValidator('[12345679+/]')])
    email = models.EmailField(max_length=255, blank=True, null=True)
    reklamebeskyttet_type_choices = (
        ('Ja', 'Ja'),
        ('Nej', 'Nej'),
    )
    reklamebeskyttet = models.CharField(max_length=3, choices=reklamebeskyttet_type_choices)
    pris = models.PositiveIntegerField(blank=True,null=True)
    url = models.URLField(blank=True, null=True)
    owner = models.ForeignKey(User, default=default_user, on_delete=models.SET_DEFAULT, null=False)

    def __str__(self):
        return self.navn


我知道,我没有ID字段,并且我已将默认主键更改为“CVR_nummer”。这个数字是丹麦每家公司都拥有的8位数字。
当从/admin站点手动创建一个对象,并尝试导出它时,它工作正常,并且没有任何id列。当我尝试导入同一个文件时,它会给予我id错误。
问题是,我不知道如何避免错误。

oymdgrw7

oymdgrw71#

所以我想了一下:
在import-export文件夹C:\PATH\Lib\site-packages\import_export\resources.py的资源中的第76行(在我的例子中),如果不是默认的“id”,你必须定义哪个modelfield是PrimaryKey:
Here you can see a screenshot of the resources.py file and the import_id_fields where the new PK is set

相关问题