I have implemented importing data using django import-export library. When i try to import data with names of object that do not exists it throws error matching query does not exist.
It ends with generating template with error stack trace like this:
Line number: 1 - CustomUser matching query does not exist.
sample@sample.com, data1, firstname, secondname
Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/import_export/resources.py", line 520, in import_row
self.import_obj(instance, row, dry_run)
File "/usr/local/lib/python3.7/site-packages/import_export/resources.py", line 385, in import_obj
self.import_field(field, obj, data)
File "/usr/local/lib/python3.7/site-packages/import_export/resources.py", line 368, in import_field
field.save(obj, data, is_m2m)
File "/usr/local/lib/python3.7/site-packages/import_export/fields.py", line 110, in save
cleaned = self.clean(data)
File "/usr/local/lib/python3.7/site-packages/import_export/fields.py", line 66, in clean
value = self.widget.clean(value, row=data)
File "/usr/local/lib/python3.7/site-packages/import_export/widgets.py", line 364, in clean
return self.get_queryset(value, row, *args, **kwargs).get(**{self.field: val})
File "/usr/local/lib/python3.7/site-packages/django/db/models/query.py", line 408, in get
self.model._meta.object_name
accounts.models.CustomUser.DoesNotExist: CustomUser matching query does not exist.
Custom resouce import class:
class UserResourceImport(resources.ModelResource):
""" Resource class for import utilities """
# set foreign key relations for model, this way we can provide name instead of id
custom_user = fields.Field(column_name='custom_user',
attribute='custom_user',
widget=ForeignKeyWidget(CustomUser, 'name'))
class Meta:
model = user_model
fields = ('email','custom_user','first_name','last_name')
skip_unchanged = False
report_skipped = True
export_order = ('email', 'custom_user', 'first_name', 'last_name')
import_id_fields = ['email']
Every other error of importing will result in generation of following template: Normal error
Is there any way to handle this error so it won't print stack trace into the import template and skip row with invalid data?