diff options
| author | Tom Christie | 2014-09-05 13:57:34 +0100 | 
|---|---|---|
| committer | Tom Christie | 2014-09-05 13:57:34 +0100 | 
| commit | 2b47c6b700be530605bd30f0afe7214ea376bd13 (patch) | |
| tree | 35376b99d70fe8a73356676b1057b1ec021d6d87 | |
| parent | 4207d4453155105e69264d6e1b8cc7a3340d5e9d (diff) | |
| parent | cb3cc00edd4a7a7e8b583a9ba3a823fb6ca76346 (diff) | |
| download | django-rest-framework-2b47c6b700be530605bd30f0afe7214ea376bd13.tar.bz2 | |
Merge pull request #1834 from piotrjakimiak/master
Fix returning None when allow_none is True in CharField
| -rw-r--r-- | rest_framework/fields.py | 8 | ||||
| -rw-r--r-- | tests/test_fields.py | 12 | 
2 files changed, 18 insertions, 2 deletions
| diff --git a/rest_framework/fields.py b/rest_framework/fields.py index 9d707c9b..8e15345d 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -475,8 +475,12 @@ class CharField(WritableField):          if isinstance(value, six.string_types):              return value -        if value is None and not self.allow_none: -            return '' +        if value is None: +            if not self.allow_none: +                return '' +            else: +                # Return None explicitly because smart_text(None) == 'None'. See #1834 for details +                return None          return smart_text(value) diff --git a/tests/test_fields.py b/tests/test_fields.py index 094ac1eb..0ddbe48b 100644 --- a/tests/test_fields.py +++ b/tests/test_fields.py @@ -1004,6 +1004,18 @@ class BooleanField(TestCase):          self.assertFalse(BooleanRequiredSerializer(data={}).is_valid()) +class ModelCharField(TestCase): +    """ +        Tests for CharField +    """ +    def test_none_serializing(self): +        class CharFieldSerializer(serializers.Serializer): +            char = serializers.CharField(allow_none=True, required=False) +        serializer = CharFieldSerializer(data={'char': None}) +        self.assertTrue(serializer.is_valid()) +        self.assertIsNone(serializer.object['char']) + +  class SerializerMethodFieldTest(TestCase):      """          Tests for the SerializerMethodField field_to_native() behavior | 
