Bulk creation while import using django-import-export
class BulkSaveMixin:
bulk_instances = []
bulk_m2m_fields = []
def save_instance(self, instance, using_transactions=True, dry_run=False):
self.before_save_instance(instance, using_transactions, dry_run)
if not using_transactions and dry_run:
# we don't have transactions and we want to do a dry_run
pass
else:
self.bulk_instances.append(instance)
self.after_save_instance(instance, using_transactions, dry_run)
def save_m2m(self, obj, data, using_transactions, dry_run):
if not using_transactions and dry_run:
# we don't have transactions and we want to do a dry_run
pass
else:
for field in self.get_import_fields():
if not isinstance(field.widget, ManyToManyWidget):
continue
self.bulk_m2m_fields.append((field, obj, data, True))
def after_import(self, dataset, result, using_transactions, dry_run, **kwargs):
self._meta.model.objects.bulk_create(self.bulk_instances)
for m2m_field in self.bulk_m2m_fields:
self.import_field(*m2m_field)
Was this article helpful?
This article is viewed 10 times!