mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-09-16 17:22:32 +03:00
Check for multiple choice enums
This commit is contained in:
parent
2d26752e7d
commit
f95dc69e03
|
@ -17,7 +17,7 @@ from django.core.validators import (
|
|||
MinValueValidator, ProhibitNullCharactersValidator, RegexValidator,
|
||||
URLValidator, ip_address_validators
|
||||
)
|
||||
from django.db.models import IntegerChoices
|
||||
from django.db.models import IntegerChoices, TextChoices
|
||||
from django.forms import FilePathField as DjangoFilePathField
|
||||
from django.forms import ImageField as DjangoImageField
|
||||
from django.utils import timezone
|
||||
|
@ -1399,7 +1399,8 @@ class ChoiceField(Field):
|
|||
if data == '' and self.allow_blank:
|
||||
return ''
|
||||
|
||||
if isinstance(data, IntegerChoices) and str(data) != str(data.value):
|
||||
if isinstance(data, (IntegerChoices, TextChoices)) and str(data) != \
|
||||
str(data.value):
|
||||
data = data.value
|
||||
|
||||
try:
|
||||
|
@ -1411,7 +1412,8 @@ class ChoiceField(Field):
|
|||
if value in ('', None):
|
||||
return value
|
||||
|
||||
if isinstance(value, IntegerChoices) and str(value) != str(value.value):
|
||||
if isinstance(value, (IntegerChoices, TextChoices)) and str(value) != \
|
||||
str(value.value):
|
||||
value = value.value
|
||||
|
||||
return self.choice_strings_to_values.get(str(value), value)
|
||||
|
@ -1437,7 +1439,8 @@ class ChoiceField(Field):
|
|||
# Allows us to deal with eg. integer choices while supporting either
|
||||
# integer or string input, but still get the correct datatype out.
|
||||
self.choice_strings_to_values = {
|
||||
str(key.value) if isinstance(key, IntegerChoices) and str(key) != str(
|
||||
str(key.value) if isinstance(key, (IntegerChoices, TextChoices))
|
||||
and str(key) != str(
|
||||
key.value) else str(key): key for key in self.choices
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user