diff options
| author | us77ipis <75014848+us77ipis@users.noreply.github.com> | 2025-11-06 16:58:01 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-11-06 11:58:01 -0500 |
| commit | 6d4d99b3cef4a6d931de02f89a493fb345dc438e (patch) | |
| tree | 4d7fdac94a08f77be0c8de849b52daf3b620e84f | |
| parent | 125b63ca745bace1e098ed3c7362d59136f68a8b (diff) | |
Fixed #36702 -- Made bulk_create() return pk values set by an expression.
| -rw-r--r-- | django/db/models/query.py | 3 | ||||
| -rw-r--r-- | 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): |
