summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--django/db/models/enums.py8
-rw-r--r--tests/model_enums/tests.py6
2 files changed, 13 insertions, 1 deletions
diff --git a/django/db/models/enums.py b/django/db/models/enums.py
index bbe362a6ab..ae20ef6d93 100644
--- a/django/db/models/enums.py
+++ b/django/db/models/enums.py
@@ -60,7 +60,13 @@ class ChoicesMeta(enum.EnumMeta):
class Choices(enum.Enum, metaclass=ChoicesMeta):
"""Class for creating enumerated choices."""
- pass
+
+ def __str__(self):
+ """
+ Use value when cast to str, so that Choices set as model instance
+ attributes are rendered as expected in templates and similar contexts.
+ """
+ return str(self.value)
class IntegerChoices(int, Choices):
diff --git a/tests/model_enums/tests.py b/tests/model_enums/tests.py
index 6b4bd6e7fd..e1810e673a 100644
--- a/tests/model_enums/tests.py
+++ b/tests/model_enums/tests.py
@@ -143,6 +143,12 @@ class ChoicesTests(SimpleTestCase):
APPLE = 1, 'Apple'
PINEAPPLE = 1, 'Pineapple'
+ def test_str(self):
+ for test in [Gender, Suit, YearInSchool, Vehicle]:
+ for member in test:
+ with self.subTest(member=member):
+ self.assertEqual(str(test[member.name]), str(member.value))
+
class Separator(bytes, models.Choices):
FS = b'\x1c', 'File Separator'