mirror of
https://github.com/encode/django-rest-framework.git
synced 2024-11-26 11:33:59 +03:00
Merge pull request #2940 from rapilabs/master
Allow unexpected values for ChoiceField/MultipleChoiceField representations
This commit is contained in:
commit
e33fed70d6
|
@ -1045,7 +1045,7 @@ class ChoiceField(Field):
|
||||||
def to_representation(self, value):
|
def to_representation(self, value):
|
||||||
if value in ('', None):
|
if value in ('', None):
|
||||||
return value
|
return value
|
||||||
return self.choice_strings_to_values[six.text_type(value)]
|
return self.choice_strings_to_values.get(six.text_type(value), value)
|
||||||
|
|
||||||
|
|
||||||
class MultipleChoiceField(ChoiceField):
|
class MultipleChoiceField(ChoiceField):
|
||||||
|
@ -1073,7 +1073,7 @@ class MultipleChoiceField(ChoiceField):
|
||||||
|
|
||||||
def to_representation(self, value):
|
def to_representation(self, value):
|
||||||
return set([
|
return set([
|
||||||
self.choice_strings_to_values[six.text_type(item)] for item in value
|
self.choice_strings_to_values.get(six.text_type(item), item) for item in value
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -920,7 +920,8 @@ class TestChoiceField(FieldValues):
|
||||||
}
|
}
|
||||||
outputs = {
|
outputs = {
|
||||||
'good': 'good',
|
'good': 'good',
|
||||||
'': ''
|
'': '',
|
||||||
|
'amazing': 'amazing',
|
||||||
}
|
}
|
||||||
field = serializers.ChoiceField(
|
field = serializers.ChoiceField(
|
||||||
choices=[
|
choices=[
|
||||||
|
@ -1005,7 +1006,7 @@ class TestMultipleChoiceField(FieldValues):
|
||||||
('aircon', 'incorrect'): ['"incorrect" is not a valid choice.']
|
('aircon', 'incorrect'): ['"incorrect" is not a valid choice.']
|
||||||
}
|
}
|
||||||
outputs = [
|
outputs = [
|
||||||
(['aircon', 'manual'], set(['aircon', 'manual']))
|
(['aircon', 'manual', 'incorrect'], set(['aircon', 'manual', 'incorrect']))
|
||||||
]
|
]
|
||||||
field = serializers.MultipleChoiceField(
|
field = serializers.MultipleChoiceField(
|
||||||
choices=[
|
choices=[
|
||||||
|
|
Loading…
Reference in New Issue
Block a user