diff options
| author | Tom Christie | 2013-08-29 09:20:38 -0700 | 
|---|---|---|
| committer | Tom Christie | 2013-08-29 09:20:38 -0700 | 
| commit | cf2033f8bf013039d906a3fe5390ca6940503626 (patch) | |
| tree | 10407e90d7e9c37110f5c5c12b5a3d4d1506b90e | |
| parent | ac4cd50a7b5e4f19ab0f25bec0bd19e77a3575f4 (diff) | |
| parent | 11071499a777ecfee6edfb7e92ecf9a12d35eeb7 (diff) | |
| download | django-rest-framework-cf2033f8bf013039d906a3fe5390ca6940503626.tar.bz2 | |
Merge pull request #1074 from diox/choicefield-empty-value
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):      """  | 
