• Home
  • Django
  • Bulk creation by django import export

Bulk creation by django import export

linkaiyi
Follow

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)
Object has 0 attachments

Was this article helpful?

This article is viewed 10 times!

Recent Viewed Articles

0 Comments

Leave a Comment

Support