aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/tests/test_serializer_nested.py
diff options
context:
space:
mode:
authorXavier Ordoquy2013-11-17 01:27:16 +0100
committerXavier Ordoquy2013-11-17 01:27:16 +0100
commitad7aa8fe485580e1bdff53d39fe3ea282d908a04 (patch)
tree95a7d3c0b5faa6288de02c33fe9f91a0ddd54974 /rest_framework/tests/test_serializer_nested.py
parent128bda5712ef041514c5e2feadef0ad248f33f54 (diff)
downloaddjango-rest-framework-ad7aa8fe485580e1bdff53d39fe3ea282d908a04.tar.bz2
Fixed the nested model serializers in case of the related_name isn’t set.
Diffstat (limited to 'rest_framework/tests/test_serializer_nested.py')
-rw-r--r--rest_framework/tests/test_serializer_nested.py35
1 files changed, 35 insertions, 0 deletions
diff --git a/rest_framework/tests/test_serializer_nested.py b/rest_framework/tests/test_serializer_nested.py
index 029f8bff..7114a060 100644
--- a/rest_framework/tests/test_serializer_nested.py
+++ b/rest_framework/tests/test_serializer_nested.py
@@ -6,6 +6,7 @@ Doesn't cover model serializers.
from __future__ import unicode_literals
from django.test import TestCase
from rest_framework import serializers
+from . import models
class WritableNestedSerializerBasicTests(TestCase):
@@ -311,3 +312,37 @@ class ForeignKeyNestedSerializerUpdateTests(TestCase):
serializer = self.AlbumSerializer(instance=original, data=data)
self.assertEqual(serializer.is_valid(), True)
self.assertEqual(serializer.object, expected)
+
+
+class NestedModelSerializerUpdateTests(TestCase):
+ def test_second_nested_level(self):
+ john = models.Person.objects.create(name="john")
+
+ post = john.blogpost_set.create(title="Test blog post")
+ post.blogpostcomment_set.create(text="I hate this blog post")
+ post.blogpostcomment_set.create(text="I love this blog post")
+
+ class BlogPostCommentSerializer(serializers.ModelSerializer):
+ class Meta:
+ model = models.BlogPostComment
+
+ class BlogPostSerializer(serializers.ModelSerializer):
+ comments = BlogPostCommentSerializer(many=True, source='blogpostcomment_set')
+ class Meta:
+ model = models.BlogPost
+ fields = ('id', 'title', 'comments')
+
+ class PersonSerializer(serializers.ModelSerializer):
+ posts = BlogPostSerializer(many=True, source='blogpost_set')
+ class Meta:
+ model = models.Person
+ fields = ('id', 'name', 'age', 'posts')
+
+ serialize = PersonSerializer(instance=john)
+ deserialize = PersonSerializer(data=serialize.data, instance=john)
+ self.assertTrue(deserialize.is_valid())
+
+ result = deserialize.object
+ result.save()
+ self.assertEqual(result.id, john.id)
+