allow default boolean values to be honoured

This commit is contained in:
Tom Walker 2013-11-22 13:42:02 +00:00
parent 43c4e3aab8
commit b96404516d
2 changed files with 36 additions and 0 deletions

View File

@ -185,6 +185,9 @@ class Field(object):
Given and object and a field name, returns the value that should be
serialized for that field.
"""
if obj is None and self.default is not None:
return self.default
if obj is None:
return self.empty

View File

@ -1720,3 +1720,36 @@ class TestSerializerTransformMethods(TestCase):
'b_renamed': None,
}
)
class DefaultTrueBooleanModel(models.Model):
cat = models.BooleanField(default=True)
dog = models.BooleanField(default=True)
class SerializerDefaultTrueBoolean(TestCase):
def setUp(self):
super(SerializerDefaultTrueBoolean, self).setUp()
class DefaultTrueBooleanSerializer(serializers.ModelSerializer):
class Meta:
model = DefaultTrueBooleanModel
fields = ('cat', 'dog')
self.default_true_boolean_serializer = DefaultTrueBooleanSerializer
def test_blank_input(self):
serializer = self.default_true_boolean_serializer()
self.assertEqual(serializer.data['dog'], True)
self.assertEqual(serializer.data['cat'], True)
def test_enabled_as_false(self):
serializer = self.default_true_boolean_serializer({'cat': False, 'dog': False})
self.assertEqual(serializer.data['cat'], False)
self.assertEqual(serializer.data['dog'], False)
def test_enabled_as_true(self):
serializer = self.default_true_boolean_serializer({'cat': True, 'dog': True})
self.assertEqual(serializer.data['cat'], True)
self.assertEqual(serializer.data['dog'], True)