mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	Refs #32460 -- Doc'd and tested that property names of model choice enums cannot be used as members.
This commit is contained in:
		
				
					committed by
					
						 Mariusz Felisiak
						Mariusz Felisiak
					
				
			
			
				
	
			
			
			
						parent
						
							4894a97578
						
					
				
				
					commit
					41e39c41c9
				
			| @@ -226,6 +226,11 @@ modifications: | ||||
|   ``.choices``, ``.labels``, ``.values``, and ``.names`` -- to make it easier | ||||
|   to access lists of those separate parts of the enumeration. Use ``.choices`` | ||||
|   as a suitable value to pass to :attr:`~Field.choices` in a field definition. | ||||
|  | ||||
|   .. warning:: | ||||
|  | ||||
|     These property names cannot be used as member names as they would conflict. | ||||
|  | ||||
| * The use of :func:`enum.unique()` is enforced to ensure that values cannot be | ||||
|   defined multiple times. This is unlikely to be expected in choices for a | ||||
|   field. | ||||
|   | ||||
| @@ -155,6 +155,10 @@ class ChoicesTests(SimpleTestCase): | ||||
|         output = template.render(Context({'Suit': Suit})) | ||||
|         self.assertEqual(output, 'Diamond|1') | ||||
|  | ||||
|     def test_property_names_conflict_with_member_names(self): | ||||
|         with self.assertRaises(AttributeError): | ||||
|             models.TextChoices('Properties', 'choices labels names values') | ||||
|  | ||||
|  | ||||
| class Separator(bytes, models.Choices): | ||||
|     FS = b'\x1c', 'File Separator' | ||||
|   | ||||
		Reference in New Issue
	
	Block a user