summaryrefslogtreecommitdiff
path: root/django/db/models/query.py
diff options
context:
space:
mode:
Diffstat (limited to 'django/db/models/query.py')
-rw-r--r--django/db/models/query.py9
1 files changed, 9 insertions, 0 deletions
diff --git a/django/db/models/query.py b/django/db/models/query.py
index 56ad4d5c20..a5b0f464a9 100644
--- a/django/db/models/query.py
+++ b/django/db/models/query.py
@@ -654,10 +654,19 @@ class QuerySet(AltersData):
return await sync_to_async(self.create)(**kwargs)
def _prepare_for_bulk_create(self, objs):
+ from django.db.models.expressions import DatabaseDefault
+
+ connection = connections[self.db]
for obj in objs:
if obj.pk is None:
# Populate new PK values.
obj.pk = obj._meta.pk.get_pk_value_on_save(obj)
+ if not connection.features.supports_default_keyword_in_bulk_insert:
+ for field in obj._meta.fields:
+ value = getattr(obj, field.attname)
+ if isinstance(value, DatabaseDefault):
+ setattr(obj, field.attname, field.db_default)
+
obj._prepare_related_fields_for_save(operation_name="bulk_create")
def _check_bulk_create_options(