mirror of
https://github.com/django/django.git
synced 2025-10-25 06:36:07 +00:00
Fixed #34388 -- Allowed using choice enumeration types directly on model and form fields.
This commit is contained in:
committed by
Mariusz Felisiak
parent
051d5944f8
commit
a2eaea8f22
@@ -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
|
||||
|
||||
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user