diff --git a/docs/ref/models/fields.txt b/docs/ref/models/fields.txt index aedf115e08..e5332d4bfc 100644 --- a/docs/ref/models/fields.txt +++ b/docs/ref/models/fields.txt @@ -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. diff --git a/tests/model_enums/tests.py b/tests/model_enums/tests.py index ffc199ce42..3bfec1596a 100644 --- a/tests/model_enums/tests.py +++ b/tests/model_enums/tests.py @@ -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'