diff options
| author | Tom Christie | 2013-12-13 03:06:14 -0800 |
|---|---|---|
| committer | Tom Christie | 2013-12-13 03:06:14 -0800 |
| commit | a129bdd0f0840176a423a57536837977791080a4 (patch) | |
| tree | 017f89a5926d4dc7f77dcb062b2de071682e43ca /rest_framework/tests | |
| parent | 7e7336db919fad673edf1e084203d1c508783010 (diff) | |
| parent | a8b15f4290f4bad17d0dd599b8d5c29c155b89e5 (diff) | |
| download | django-rest-framework-a129bdd0f0840176a423a57536837977791080a4.tar.bz2 | |
Merge pull request #1234 from linovia/bugfix/nested_models_without_related_name
Fixed the nested model serializers in case of the related_name isn’t set...
Diffstat (limited to 'rest_framework/tests')
| -rw-r--r-- | rest_framework/tests/test_serializer_nested.py | 35 |
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) + |
