diff options
| author | Mathieu Pillard | 2013-08-29 18:10:47 +0200 |
|---|---|---|
| committer | Mathieu Pillard | 2013-08-29 18:10:47 +0200 |
| commit | 11071499a777ecfee6edfb7e92ecf9a12d35eeb7 (patch) | |
| tree | 10407e90d7e9c37110f5c5c12b5a3d4d1506b90e | |
| parent | ac4cd50a7b5e4f19ab0f25bec0bd19e77a3575f4 (diff) | |
| download | django-rest-framework-11071499a777ecfee6edfb7e92ecf9a12d35eeb7.tar.bz2 | |
Make ChoiceField.from_native() follow IntegerField behaviour on empty values
| -rw-r--r-- | rest_framework/fields.py | 5 | ||||
| -rw-r--r-- | rest_framework/tests/test_fields.py | 8 |
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): """ |
