I am trying to import data with a foreign key following the guide from the Django import-export library (foreign key widget). But I am getting the following error , I have tried to add an additional column with the header name id but I still get the same error.
Errors
Line number: 1 - 'id'
None, 46, 19, LSD
Traceback (most recent call last):
File "/var/www/vfsc-env/lib/python3.6/site-packages/import_export/resources.py", line 635, in import_row
instance, new = self.get_or_init_instance(instance_loader, row)
File "/var/www/vfsc-env/lib/python3.6/site-packages/import_export/resources.py", line 330, in get_or_init_instance
instance = self.get_instance(instance_loader, row)
File "/var/www/vfsc-env/lib/python3.6/site-packages/import_export/resources.py", line 318, in get_instance
self.fields[f] for f in self.get_import_id_fields()
File "/var/www/vfsc-env/lib/python3.6/site-packages/import_export/resources.py", line 318, in <listcomp>
self.fields[f] for f in self.get_import_id_fields()
KeyError: 'id'
Here is what I did.
class Clockin_Users(models.Model):
id = models.AutoField(db_column='ID', primary_key=True) # Field name made lowercase.
userid = models.IntegerField(db_column='UserID', unique=True) # Field name made lowercase.
username = models.CharField(db_column='UserName', max_length=20, blank=True,
facecount = models.IntegerField(db_column='FaceCount', blank=True, null=True) # Field name made lowercase.
userid9 = models.CharField(db_column='UserID9', max_length=10, blank=True, null=True) # Field name made lowercase.
depid = models.IntegerField(db_column='DepID', blank=True, null=True) # Field name made lowercase.
empno = models.CharField(db_column='EMPNO', max_length=50, blank=True, null=True) # Field name made lowercase.
def __str__(self):
return self.name
class Clockin_Department(models.Model):
clockinusers = models.ForeignKey(Clockin_Users, on_delete=models.CASCADE)
depid = models.AutoField(db_column='DepID', primary_key=True) # Field name made lowercase.
departmentname = models.CharField(db_column='DepartmentName', max_length=100, blank=True,
null=True) # Field name made lowercase
def __str__(self):
return self.departmentname
class ClockinDepartmentResource(resources.ModelResource):
clockinusers = fields.Field(column_name='clockinusers', attribute='clockinusers',
widget=ForeignKeyWidget(Clockin_Users))
class Meta:
fields = 'clockinusers'
class ClockinDepartmentAdmin(ImportExportModelAdmin):
list_display = ('clockinusers', 'depid', 'departmentname')
recource_class = ClockinDepartmentResource
admin.site.register(Clockin_Department, ClockinDepartmentAdmin)