mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-02 11:30:12 +03:00
honour default value even when field value not specified
This commit is contained in:
parent
b96404516d
commit
4f7cd6c652
|
@ -323,6 +323,8 @@ class BaseSerializer(WritableField):
|
|||
field.initialize(parent=self, field_name=field_name)
|
||||
key = self.get_field_key(field_name)
|
||||
value = field.field_to_native(obj, field_name)
|
||||
if value == None and hasattr(field, 'default'):
|
||||
value = field.default
|
||||
method = getattr(self, 'transform_%s' % field_name, None)
|
||||
if callable(method):
|
||||
value = method(obj, value)
|
||||
|
|
|
@ -1722,7 +1722,7 @@ class TestSerializerTransformMethods(TestCase):
|
|||
)
|
||||
class DefaultTrueBooleanModel(models.Model):
|
||||
cat = models.BooleanField(default=True)
|
||||
dog = models.BooleanField(default=True)
|
||||
dog = models.BooleanField(default=False)
|
||||
|
||||
class SerializerDefaultTrueBoolean(TestCase):
|
||||
|
||||
|
@ -1738,18 +1738,20 @@ class SerializerDefaultTrueBoolean(TestCase):
|
|||
|
||||
def test_blank_input(self):
|
||||
serializer = self.default_true_boolean_serializer()
|
||||
self.assertEqual(serializer.data['dog'], True)
|
||||
self.assertEqual(serializer.data['cat'], True)
|
||||
|
||||
|
||||
self.assertEqual(serializer.data['dog'], False)
|
||||
|
||||
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)
|
||||
|
||||
def test_enabled_partial(self):
|
||||
serializer = self.default_true_boolean_serializer({'cat': False})
|
||||
self.assertEqual(serializer.data['cat'], False)
|
||||
self.assertEqual(serializer.data['dog'], False)
|
||||
|
|
Loading…
Reference in New Issue
Block a user