From 6d4d99b3cef4a6d931de02f89a493fb345dc438e Mon Sep 17 00:00:00 2001 From: us77ipis <75014848+us77ipis@users.noreply.github.com> Date: Thu, 6 Nov 2025 16:58:01 +0000 Subject: Fixed #36702 -- Made bulk_create() return pk values set by an expression. --- django/db/models/query.py | 3 +-- tests/bulk_create/tests.py | 9 +++++++++ 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): -- cgit v1.3