mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-02-02 20:54:42 +03:00
Make default field check safe for boolean values whereby 'False' may be an acceptable default value
This commit is contained in:
parent
cab4a2a5ad
commit
38673c35d4
|
@ -393,7 +393,7 @@ class ModelSerializer(Serializer):
|
||||||
except KeyError:
|
except KeyError:
|
||||||
ret = ModelField(model_field=model_field)
|
ret = ModelField(model_field=model_field)
|
||||||
|
|
||||||
if model_field.default:
|
if model_field.default is not None:
|
||||||
ret.required = False
|
ret.required = False
|
||||||
|
|
||||||
return ret
|
return ret
|
||||||
|
|
|
@ -91,3 +91,7 @@ class Comment(RESTFrameworkModel):
|
||||||
email = models.EmailField()
|
email = models.EmailField()
|
||||||
content = models.CharField(max_length=200)
|
content = models.CharField(max_length=200)
|
||||||
created = models.DateTimeField(auto_now_add=True)
|
created = models.DateTimeField(auto_now_add=True)
|
||||||
|
|
||||||
|
class ActionItem(RESTFrameworkModel):
|
||||||
|
title = models.CharField(max_length=200)
|
||||||
|
done = models.BooleanField(default=False)
|
||||||
|
|
|
@ -28,6 +28,10 @@ class CommentSerializer(serializers.Serializer):
|
||||||
return instance
|
return instance
|
||||||
|
|
||||||
|
|
||||||
|
class ActionItemSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = ActionItem
|
||||||
|
|
||||||
class BasicTests(TestCase):
|
class BasicTests(TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.comment = Comment(
|
self.comment = Comment(
|
||||||
|
@ -81,7 +85,9 @@ class ValidationTests(TestCase):
|
||||||
'email': 'tom@example.com',
|
'email': 'tom@example.com',
|
||||||
'content': 'x' * 1001,
|
'content': 'x' * 1001,
|
||||||
'created': datetime.datetime(2012, 1, 1)
|
'created': datetime.datetime(2012, 1, 1)
|
||||||
}
|
}
|
||||||
|
self.actionitem = ActionItem('Some to do item',
|
||||||
|
)
|
||||||
|
|
||||||
def test_create(self):
|
def test_create(self):
|
||||||
serializer = CommentSerializer(self.data)
|
serializer = CommentSerializer(self.data)
|
||||||
|
@ -102,6 +108,17 @@ class ValidationTests(TestCase):
|
||||||
self.assertEquals(serializer.is_valid(), False)
|
self.assertEquals(serializer.is_valid(), False)
|
||||||
self.assertEquals(serializer.errors, {'email': [u'This field is required.']})
|
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):
|
class MetadataTests(TestCase):
|
||||||
def test_empty(self):
|
def test_empty(self):
|
||||||
|
|
Loading…
Reference in New Issue
Block a user