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):