summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorT. Franzel <tfranzel@users.noreply.github.com>2023-03-11 00:34:13 +0100
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2023-03-21 19:44:41 +0100
commita2eaea8f22305b57dff3ab13add2e2887287bb6f (patch)
treea2f1acee503899e52a583572a46aeee0d1a5432c /django
parent051d5944f86400b9b3476db60bc73de7e9964810 (diff)
downloaddjango-a2eaea8f22305b57dff3ab13add2e2887287bb6f.tar.gz
Fixed #34388 -- Allowed using choice enumeration types directly on model and form fields.
Diffstat (limited to 'django')
-rw-r--r--django/db/models/fields/__init__.py3
-rw-r--r--django/forms/fields.py3
2 files changed, 6 insertions, 0 deletions
diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py
index 060e1be605..ab4c094c1c 100644
--- a/django/db/models/fields/__init__.py
+++ b/django/db/models/fields/__init__.py
@@ -14,6 +14,7 @@ from django.conf import settings
from django.core import checks, exceptions, validators
from django.db import connection, connections, router
from django.db.models.constants import LOOKUP_SEP
+from django.db.models.enums import ChoicesMeta
from django.db.models.query_utils import DeferredAttribute, RegisterLookupMixin
from django.utils import timezone
from django.utils.datastructures import DictWrapper
@@ -216,6 +217,8 @@ class Field(RegisterLookupMixin):
self.unique_for_date = unique_for_date
self.unique_for_month = unique_for_month
self.unique_for_year = unique_for_year
+ if isinstance(choices, ChoicesMeta):
+ choices = choices.choices
if isinstance(choices, collections.abc.Iterator):
choices = list(choices)
self.choices = choices
diff --git a/django/forms/fields.py b/django/forms/fields.py
index 46de2f53a0..003fb5ca6b 100644
--- a/django/forms/fields.py
+++ b/django/forms/fields.py
@@ -16,6 +16,7 @@ from urllib.parse import urlsplit, urlunsplit
from django.core import validators
from django.core.exceptions import ValidationError
+from django.db.models.enums import ChoicesMeta
from django.forms.boundfield import BoundField
from django.forms.utils import from_current_timezone, to_current_timezone
from django.forms.widgets import (
@@ -857,6 +858,8 @@ class ChoiceField(Field):
def __init__(self, *, choices=(), **kwargs):
super().__init__(**kwargs)
+ if isinstance(choices, ChoicesMeta):
+ choices = choices.choices
self.choices = choices
def __deepcopy__(self, memo):