mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	Fixed #25910 -- Rejected read-only property names in model constructors.
This commit is contained in:
		
				
					committed by
					
						 Tim Graham
						Tim Graham
					
				
			
			
				
	
			
			
			
						parent
						
							4dc74371e3
						
					
				
				
					commit
					16baec5c8a
				
			| @@ -435,7 +435,8 @@ class Model(six.with_metaclass(ModelBase)): | ||||
|             for prop in list(kwargs): | ||||
|                 try: | ||||
|                     if isinstance(getattr(self.__class__, prop), property): | ||||
|                         setattr(self, prop, kwargs.pop(prop)) | ||||
|                         setattr(self, prop, kwargs[prop]) | ||||
|                         del kwargs[prop] | ||||
|                 except AttributeError: | ||||
|                     pass | ||||
|             if kwargs: | ||||
|   | ||||
| @@ -18,6 +18,10 @@ class PropertyTests(TestCase): | ||||
|         # The "full_name" property hasn't provided a "set" method. | ||||
|         self.assertRaises(AttributeError, setattr, self.a, 'full_name', 'Paul McCartney') | ||||
|  | ||||
|         # And cannot be used to initialize the class. | ||||
|         with self.assertRaisesMessage(TypeError, "'full_name' is an invalid keyword argument"): | ||||
|             Person(full_name='Paul McCartney') | ||||
|  | ||||
|         # But "full_name_2" has, and it can be used to initialize the class. | ||||
|         a2 = Person(full_name_2='Paul McCartney') | ||||
|         a2.save() | ||||
|   | ||||
		Reference in New Issue
	
	Block a user