aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMathieu Pillard2013-08-29 18:10:47 +0200
committerMathieu Pillard2013-08-29 18:10:47 +0200
commit11071499a777ecfee6edfb7e92ecf9a12d35eeb7 (patch)
tree10407e90d7e9c37110f5c5c12b5a3d4d1506b90e
parentac4cd50a7b5e4f19ab0f25bec0bd19e77a3575f4 (diff)
downloaddjango-rest-framework-11071499a777ecfee6edfb7e92ecf9a12d35eeb7.tar.bz2
Make ChoiceField.from_native() follow IntegerField behaviour on empty values
-rw-r--r--rest_framework/fields.py5
-rw-r--r--rest_framework/tests/test_fields.py8
2 files changed, 13 insertions, 0 deletions
diff --git a/rest_framework/fields.py b/rest_framework/fields.py
index 3e0ca1a1..210c2537 100644
--- a/rest_framework/fields.py
+++ b/rest_framework/fields.py
@@ -514,6 +514,11 @@ class ChoiceField(WritableField):
return True
return False
+ def from_native(self, value):
+ if value in validators.EMPTY_VALUES:
+ return None
+ return super(ChoiceField, self).from_native(value)
+
class EmailField(CharField):
type_name = 'EmailField'
diff --git a/rest_framework/tests/test_fields.py b/rest_framework/tests/test_fields.py
index ebccba7d..34fbab9c 100644
--- a/rest_framework/tests/test_fields.py
+++ b/rest_framework/tests/test_fields.py
@@ -688,6 +688,14 @@ class ChoiceFieldTests(TestCase):
f = serializers.ChoiceField(required=False, choices=self.SAMPLE_CHOICES)
self.assertEqual(f.choices, models.fields.BLANK_CHOICE_DASH + self.SAMPLE_CHOICES)
+ def test_from_native_empty(self):
+ """
+ Make sure from_native() returns None on empty param.
+ """
+ f = serializers.ChoiceField(choices=self.SAMPLE_CHOICES)
+ result = f.from_native('')
+ self.assertEqual(result, None)
+
class EmailFieldTests(TestCase):
"""