mirror of
				https://github.com/django/django.git
				synced 2025-10-31 01:25:32 +00:00 
			
		
		
		
	Fixed #36068 -- Raised ValueError when providing a composite PK field to bulk_create() update_fields.
This commit is contained in:
		| @@ -728,7 +728,7 @@ class QuerySet(AltersData): | |||||||
|                     "bulk_create() can only be used with concrete fields in " |                     "bulk_create() can only be used with concrete fields in " | ||||||
|                     "update_fields." |                     "update_fields." | ||||||
|                 ) |                 ) | ||||||
|             if any(f.primary_key for f in update_fields): |             if any(f in self.model._meta.pk_fields for f in update_fields): | ||||||
|                 raise ValueError( |                 raise ValueError( | ||||||
|                     "bulk_create() cannot be used with primary keys in " |                     "bulk_create() cannot be used with primary keys in " | ||||||
|                     "update_fields." |                     "update_fields." | ||||||
|   | |||||||
| @@ -1,4 +1,4 @@ | |||||||
| from django.test import TestCase | from django.test import TestCase, skipUnlessDBFeature | ||||||
|  |  | ||||||
| from .models import Tenant, User | from .models import Tenant, User | ||||||
|  |  | ||||||
| @@ -77,6 +77,21 @@ class CompositePKCreateTests(TestCase): | |||||||
|         self.assertEqual(obj_3.pk, (obj_3.tenant_id, obj_3.id)) |         self.assertEqual(obj_3.pk, (obj_3.tenant_id, obj_3.id)) | ||||||
|         self.assertEqual(obj_3.email, "user8214@example.com") |         self.assertEqual(obj_3.email, "user8214@example.com") | ||||||
|  |  | ||||||
|  |     @skipUnlessDBFeature( | ||||||
|  |         "supports_update_conflicts", | ||||||
|  |         "supports_update_conflicts_with_target", | ||||||
|  |     ) | ||||||
|  |     def test_bulk_create_user_with_pk_field_in_update_fields(self): | ||||||
|  |         objs = [User(tenant=self.tenant, id=8291, email="user8291@example.com")] | ||||||
|  |         msg = "bulk_create() cannot be used with primary keys in update_fields." | ||||||
|  |         with self.assertRaisesMessage(ValueError, msg): | ||||||
|  |             User.objects.bulk_create( | ||||||
|  |                 objs, | ||||||
|  |                 update_conflicts=True, | ||||||
|  |                 update_fields=["tenant_id"], | ||||||
|  |                 unique_fields=["id", "tenant_id"], | ||||||
|  |             ) | ||||||
|  |  | ||||||
|     def test_get_or_create_user(self): |     def test_get_or_create_user(self): | ||||||
|         test_cases = ( |         test_cases = ( | ||||||
|             { |             { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user