I use django-import-export package but when I try to import data, I get KeyError: 'id'.
I've read documentation and apply the way to customize row identification field import_id_fields but that did not solve my issue.
#import
dataset = tablib.Dataset(['2f60d3c6-95f1-43e1-ba30-62eb4a7533ed', 2001,'2023-09-25',False,'',False,'2023-09-25 13:21:46.03246+02',1,''], headers=['uuid', 'qr_code','date','village','provenance','synchronized','created_at','created_by','transfered_to'])
preinclusion_resource = PreinclusionResource()
result = preinclusion_resource.import_data(dataset, dry_run=True)
print(result.has_errors())
result = preinclusion_resource.import_data(dataset, dry_run=False)
#models.py
class Preinclusion(models.Model):
_safedelete_policy = SOFT_DELETE_CASCADE
uuid = models.UUIDField(default=uuid.uuid4, max_length=36, null=False, unique=True, primary_key=True)
qr_code = models.IntegerField('QR Code', null=True, blank=True, unique=True) # TAB MATRONE & AS
date = models.DateField("Date", null=True, blank=True) # TAB MATRONE & AS
village = models.BooleanField('Pré-incluses au village', blank=True, default=False)
provenance = models.IntegerField('Sinon', null=True, blank=True)
pictograms = models.ManyToManyField(Pictogram, blank=True) # TAB MATRONE & AS
synchronized = models.BooleanField(blank=True, default=False)
created_at = models.DateTimeField("Créé le", null=True, blank=True, auto_now_add=True)
created_by = models.IntegerField('Créé par', null=True, blank=True)
transfered_to = models.IntegerField('Transféré à', null=True, blank=True)
log = HistoricalRecords()
class Meta:
db_table = "Preinclusion"
ordering = ["uuid"]
def __str__(self):
return f"{self.qr_code}"
#modelsResource
class PreinclusionResource(resources.ModelResource):
class Meta:
model = Preinclusion
import_id_fields = ('uuid',)
fields = ('uuid','qr_code','date','village','provenance','synchronized','created_at','creatd_by','transfered_to') #