-
-
Notifications
You must be signed in to change notification settings - Fork 820
Closed
Labels
Description
models.py
class Location(models.Model):
name = models.CharField(max_length=40)
parent = models.ForeignKey(
to="self",
on_delete=models.CASCADE,
related_name="children",
blank=True,
null=True,
default=None,
)
depth = models.PositiveSmallIntegerField(default=0, editable=False)
def save(self, *args, **kwargs):
if self.parent and self.parent.depth < 6:
self.depth = self.parent.depth + 1
super().save(*args, **kwargs)
resources.py
class LocationResource(resources.ModelResource):
parent = fields.Field(
column_name="parent",
attribute="parent",
widget=ForeignKeyWidget(Location, "id"),
)
class Meta:
model = Location
sample data
id,name,parent,depth
1,Selangor,,0
2,Terengganu,,0
3,Kuala Terengganu,2,1
4,Petaling Jaya,1,1
5,Shah Alam,1,1
6,Kajang,1,1
The error that I'm getting
File "./manage.py", line 27, in <module>
main()
File "./manage.py", line 23, in main
execute_from_command_line(sys.argv)
File "/home/abc/.virtualenvs/demo/lib/python3.8/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
utility.execute()
File "/home/abc/.virtualenvs/demo/lib/python3.8/site-packages/django/core/management/__init__.py", line 395, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/abc/.virtualenvs/demo/lib/python3.8/site-packages/django/core/management/base.py", line 330, in run_from_argv
self.execute(*args, **cmd_options)
File "/home/abc/.virtualenvs/demo/lib/python3.8/site-packages/django/core/management/base.py", line 371, in execute
output = self.handle(*args, **options)
File "/home/abc/projects/demo/app/core/management/commands/import_from_csv.py", line 63, in handle
self.import_file(
File "/home/abc/projects/demo/app/core/management/commands/import_from_csv.py", line 29, in import_file
mock_import = resource().import_data(
File "/home/abc/.virtualenvs/demo/lib/python3.8/site-packages/import_export/resources.py", line 745, in import_data
return self.import_data_inner(dataset, dry_run, raise_errors, using_transactions, collect_failed_rows, **kwargs)
File "/home/abc/.virtualenvs/demo/lib/python3.8/site-packages/import_export/resources.py", line 792, in import_data_inner
raise row_result.errors[-1].error
File "/home/abc/.virtualenvs/demo/lib/python3.8/site-packages/import_export/resources.py", line 662, in import_row
self.import_obj(instance, row, dry_run)
File "/home/abc/.virtualenvs/demo/lib/python3.8/site-packages/import_export/resources.py", line 516, in import_obj
self.import_field(field, obj, data)
File "/home/abc/.virtualenvs/demo/lib/python3.8/site-packages/import_export/resources.py", line 499, in import_field
field.save(obj, data, is_m2m)
File "/home/abc/.virtualenvs/demo/lib/python3.8/site-packages/import_export/fields.py", line 110, in save
cleaned = self.clean(data)
File "/home/abc/.virtualenvs/demo/lib/python3.8/site-packages/import_export/fields.py", line 66, in clean
value = self.widget.clean(value, row=data)
File "/home/abc/.virtualenvs/demo/lib/python3.8/site-packages/import_export/widgets.py", line 396, in clean
return self.get_queryset(value, row, *args, **kwargs).get(**{self.field: val})
File "/home/abc/.virtualenvs/demo/lib/python3.8/site-packages/django/db/models/query.py", line 429, in get
raise self.model.DoesNotExist(
location.location.models.DoesNotExist: Location matching query does not exist.
Python: 3.8.5
Django: 3.1.2
Django Import Export: 2.4.0
Kindly point me to the doc or right direction regarding importing self-referring data. I have tried looking for an example but have failed.
My apologies if this is the wrong place to ask.