diff options
author | T. Franzel <tfranzel@users.noreply.github.com> | 2023-03-11 00:34:13 +0100 |
---|---|---|
committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2023-03-21 19:44:41 +0100 |
commit | a2eaea8f22305b57dff3ab13add2e2887287bb6f (patch) | |
tree | a2f1acee503899e52a583572a46aeee0d1a5432c /django | |
parent | 051d5944f86400b9b3476db60bc73de7e9964810 (diff) | |
download | django-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__.py | 3 | ||||
-rw-r--r-- | django/forms/fields.py | 3 |
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): |