aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--rest_framework/fields.py4
-rw-r--r--tests/test_fields.py15
2 files changed, 13 insertions, 6 deletions
diff --git a/rest_framework/fields.py b/rest_framework/fields.py
index 12975ae4..500018f3 100644
--- a/rest_framework/fields.py
+++ b/rest_framework/fields.py
@@ -750,7 +750,7 @@ class ChoiceField(Field):
self.fail('invalid_choice', input=data)
def to_representation(self, value):
- return value
+ return self.choice_strings_to_values[str(value)]
class MultipleChoiceField(ChoiceField):
@@ -769,7 +769,7 @@ class MultipleChoiceField(ChoiceField):
])
def to_representation(self, value):
- return value
+ return [self.choice_strings_to_values[str(item)] for item in value]
# File types...
diff --git a/tests/test_fields.py b/tests/test_fields.py
index 8c50aaba..3343123f 100644
--- a/tests/test_fields.py
+++ b/tests/test_fields.py
@@ -505,9 +505,11 @@ class TestChoiceField(FieldValues):
'good': 'good',
}
invalid_inputs = {
- 'awful': ['`awful` is not a valid choice.']
+ 'amazing': ['`amazing` is not a valid choice.']
+ }
+ outputs = {
+ 'good': 'good'
}
- outputs = {}
field = fields.ChoiceField(
choices=[
('poor', 'Poor quality'),
@@ -530,7 +532,10 @@ class TestChoiceFieldWithType(FieldValues):
5: ['`5` is not a valid choice.'],
'abc': ['`abc` is not a valid choice.']
}
- outputs = {}
+ outputs = {
+ '1': 1,
+ 1: 1
+ }
field = fields.ChoiceField(
choices=[
(1, 'Poor quality'),
@@ -553,7 +558,9 @@ class TestChoiceFieldWithListChoices(FieldValues):
invalid_inputs = {
'awful': ['`awful` is not a valid choice.']
}
- outputs = {}
+ outputs = {
+ 'good': 'good'
+ }
field = fields.ChoiceField(choices=('poor', 'medium', 'good'))