mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	[4.0.x] Fixed #33335 -- Made model validation ignore functional unique constraints.
Regression in3aa545281e. Thanks Hervé Le Roy for the report. Backport of1eaf38fa87from main
This commit is contained in:
		
				
					committed by
					
						 Mariusz Felisiak
						Mariusz Felisiak
					
				
			
			
				
	
			
			
			
						parent
						
							7bde53a7ae
						
					
				
				
					commit
					fed7f992ac
				
			| @@ -8,7 +8,8 @@ from django.test import TestCase | ||||
|  | ||||
| from .models import ( | ||||
|     CustomPKModel, FlexibleDatePost, ModelToValidate, Post, UniqueErrorsModel, | ||||
|     UniqueFieldsModel, UniqueForDateModel, UniqueTogetherModel, | ||||
|     UniqueFieldsModel, UniqueForDateModel, UniqueFuncConstraintModel, | ||||
|     UniqueTogetherModel, | ||||
| ) | ||||
|  | ||||
|  | ||||
| @@ -86,6 +87,13 @@ class GetUniqueCheckTests(unittest.TestCase): | ||||
|         ), m._get_unique_checks(exclude='start_date') | ||||
|         ) | ||||
|  | ||||
|     def test_func_unique_constraint_ignored(self): | ||||
|         m = UniqueFuncConstraintModel() | ||||
|         self.assertEqual( | ||||
|             m._get_unique_checks(), | ||||
|             ([(UniqueFuncConstraintModel, ('id',))], []), | ||||
|         ) | ||||
|  | ||||
|  | ||||
| class PerformUniqueChecksTest(TestCase): | ||||
|     def test_primary_key_unique_check_not_performed_when_adding_and_pk_not_specified(self): | ||||
| @@ -108,6 +116,10 @@ class PerformUniqueChecksTest(TestCase): | ||||
|             mtv = ModelToValidate(number=10, name='Some Name') | ||||
|             mtv.full_clean() | ||||
|  | ||||
|     def test_func_unique_check_not_performed(self): | ||||
|         with self.assertNumQueries(0): | ||||
|             UniqueFuncConstraintModel(field='some name').full_clean() | ||||
|  | ||||
|     def test_unique_for_date(self): | ||||
|         Post.objects.create( | ||||
|             title="Django 1.0 is released", slug="Django 1.0", | ||||
|   | ||||
		Reference in New Issue
	
	Block a user