diff options
| -rw-r--r-- | rest_framework/serializers.py | 2 | ||||
| -rw-r--r-- | rest_framework/tests/models.py | 4 | ||||
| -rw-r--r-- | rest_framework/tests/serializer.py | 19 | 
3 files changed, 23 insertions, 2 deletions
diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index 13f8cde2..6724bbdf 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -393,7 +393,7 @@ class ModelSerializer(Serializer):          except KeyError:              ret = ModelField(model_field=model_field) -        if model_field.default: +        if model_field.default is not None:              ret.required = False          return ret diff --git a/rest_framework/tests/models.py b/rest_framework/tests/models.py index 6a758f0c..75dab2f7 100644 --- a/rest_framework/tests/models.py +++ b/rest_framework/tests/models.py @@ -91,3 +91,7 @@ class Comment(RESTFrameworkModel):      email = models.EmailField()      content = models.CharField(max_length=200)      created = models.DateTimeField(auto_now_add=True) + +class ActionItem(RESTFrameworkModel): +    title = models.CharField(max_length=200) +    done = models.BooleanField(default=False) diff --git a/rest_framework/tests/serializer.py b/rest_framework/tests/serializer.py index 256987ad..610ed85f 100644 --- a/rest_framework/tests/serializer.py +++ b/rest_framework/tests/serializer.py @@ -28,6 +28,10 @@ class CommentSerializer(serializers.Serializer):          return instance +class ActionItemSerializer(serializers.ModelSerializer): +    class Meta: +        model = ActionItem +  class BasicTests(TestCase):      def setUp(self):          self.comment = Comment( @@ -81,7 +85,9 @@ class ValidationTests(TestCase):              'email': 'tom@example.com',              'content': 'x' * 1001,              'created': datetime.datetime(2012, 1, 1) -        } +        }          +        self.actionitem = ActionItem('Some to do item', +        )      def test_create(self):          serializer = CommentSerializer(self.data) @@ -102,6 +108,17 @@ class ValidationTests(TestCase):          self.assertEquals(serializer.is_valid(), False)          self.assertEquals(serializer.errors, {'email': [u'This field is required.']}) +    def test_missing_bool_with_default(self): +        """Make sure that a boolean value with a 'False' value is not +        mistaken for not having a default.""" +        data = { +            'title':'Some action item', +            #No 'done' value. +        } +        serializer = ActionItemSerializer(data, instance=self.actionitem) +        self.assertEquals(serializer.is_valid(), True) +        self.assertEquals(serializer.errors, {}) +  class MetadataTests(TestCase):      def test_empty(self):  | 
