[Django]-Question about batch save objects in Django

10👍

Unfortunately, batch inserts are something that Django 1.3 and prior do not directly support. If you want to use the ORM, then you do have to call save() on each individual object. If it’s a large list and performance is an issue, you can use django.db.cursor to INSERT the items manually inside a transaction to dramatically speed the process up. If you have a huge dataset, you need to start looking at Database engine specific methods, like COPY FROM in Postgres.

38👍

As of Django 1.4, there exists a bulk_create() method on the QuerySet object, which allows for inserting a list of objects in a single query. For more info, see:

👤Gary

5👍

From Django 1.4 exists bulk_create(), but, always but.

You need to be careful, using bulk_create() it wont call instance save() method internally.

As django docs says

The model’s save() method will not be called

So, if you are overriding save method, (as my case was) you can’t use bulk_create.

👤levi

2👍

This question is also addressed in How do I perform a batch insert in Django?, which provides some ways to make Django do this.

1👍

This might be a good starting point, but as the author of the code snippet says, it might not be production ready.

Leave a comment