summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorus77ipis <75014848+us77ipis@users.noreply.github.com>2025-11-06 16:58:01 +0000
committerGitHub <noreply@github.com>2025-11-06 11:58:01 -0500
commit6d4d99b3cef4a6d931de02f89a493fb345dc438e (patch)
tree4d7fdac94a08f77be0c8de849b52daf3b620e84f
parent125b63ca745bace1e098ed3c7362d59136f68a8b (diff)
Fixed #36702 -- Made bulk_create() return pk values set by an expression.
-rw-r--r--django/db/models/query.py3
-rw-r--r--tests/bulk_create/tests.py9
2 files changed, 10 insertions, 2 deletions
diff --git a/django/db/models/query.py b/django/db/models/query.py
index 3c9c42cdc7..73d6717bce 100644
--- a/django/db/models/query.py
+++ b/django/db/models/query.py
@@ -842,8 +842,7 @@ class QuerySet(AltersData):
)
for obj_with_pk, results in zip(objs_with_pk, returned_columns):
for result, field in zip(results, opts.db_returning_fields):
- if field != opts.pk:
- setattr(obj_with_pk, field.attname, result)
+ setattr(obj_with_pk, field.attname, result)
for obj_with_pk in objs_with_pk:
obj_with_pk._state.adding = False
obj_with_pk._state.db = self.db
diff --git a/tests/bulk_create/tests.py b/tests/bulk_create/tests.py
index 7b77ffed3d..397fcb9186 100644
--- a/tests/bulk_create/tests.py
+++ b/tests/bulk_create/tests.py
@@ -884,6 +884,15 @@ class BulkCreateTests(TestCase):
(obj,) = DbDefaultPrimaryKey.objects.bulk_create([DbDefaultPrimaryKey()])
self.assertIsInstance(obj.id, datetime)
+ @skipUnlessDBFeature(
+ "can_return_rows_from_bulk_insert", "supports_expression_defaults"
+ )
+ def test_db_expression_primary_key(self):
+ (obj,) = DbDefaultPrimaryKey.objects.bulk_create(
+ [DbDefaultPrimaryKey(id=Now())]
+ )
+ self.assertIsInstance(obj.id, datetime)
+
@skipUnlessDBFeature("supports_transactions", "has_bulk_insert")
class BulkCreateTransactionTests(TransactionTestCase):