Commit e5777a61 by Tom Christie

Merge pull request #336 from markotibold/null_is_true_model_fields

Null is true model fields
parents 62ec3680 20685952
...@@ -393,6 +393,9 @@ class ModelSerializer(Serializer): ...@@ -393,6 +393,9 @@ class ModelSerializer(Serializer):
Creates a default instance of a basic non-relational field. Creates a default instance of a basic non-relational field.
""" """
kwargs = {} kwargs = {}
if model_field.null:
kwargs['required'] = False
if model_field.has_default(): if model_field.has_default():
kwargs['required'] = False kwargs['required'] = False
kwargs['default'] = model_field.get_default() kwargs['default'] = model_field.get_default()
......
...@@ -116,3 +116,8 @@ class BlogPost(RESTFrameworkModel): ...@@ -116,3 +116,8 @@ class BlogPost(RESTFrameworkModel):
class BlogPostComment(RESTFrameworkModel): class BlogPostComment(RESTFrameworkModel):
text = models.TextField() text = models.TextField()
blog_post = models.ForeignKey(BlogPost) blog_post = models.ForeignKey(BlogPost)
class Person(RESTFrameworkModel):
name = models.CharField(max_length=10)
age = models.IntegerField(null=True, blank=True)
...@@ -43,6 +43,11 @@ class ActionItemSerializer(serializers.ModelSerializer): ...@@ -43,6 +43,11 @@ class ActionItemSerializer(serializers.ModelSerializer):
model = ActionItem model = ActionItem
class PersonSerializer(serializers.ModelSerializer):
class Meta:
model = Person
class BasicTests(TestCase): class BasicTests(TestCase):
def setUp(self): def setUp(self):
self.comment = Comment( self.comment = Comment(
...@@ -188,6 +193,14 @@ class ValidationTests(TestCase): ...@@ -188,6 +193,14 @@ class ValidationTests(TestCase):
self.assertFalse(serializer.is_valid()) self.assertFalse(serializer.is_valid())
self.assertEquals(serializer.errors, {'non_field_errors': [u'Email address not in content']}) self.assertEquals(serializer.errors, {'non_field_errors': [u'Email address not in content']})
def test_null_is_true_fields(self):
"""
Omitting a value for null-field should validate.
"""
serializer = PersonSerializer({'name': 'marko'})
self.assertEquals(serializer.is_valid(), True)
self.assertEquals(serializer.errors, {})
class MetadataTests(TestCase): class MetadataTests(TestCase):
def test_empty(self): def test_empty(self):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment