aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/tests
diff options
context:
space:
mode:
authorTom Christie2012-12-29 13:19:05 +0000
committerTom Christie2012-12-29 13:19:05 +0000
commit923f81d26971510c12cb08e3061c7b37c0c6ffe8 (patch)
treef49cc1a76ecd4873dbeac437f5af0bd950241745 /rest_framework/tests
parent250a7231d3b5e44bc5ff984ef9fd515bfd238a25 (diff)
downloaddjango-rest-framework-923f81d26971510c12cb08e3061c7b37c0c6ffe8.tar.bz2
Nested serializers now support nullable relationships, plus test. Fixes #384
Diffstat (limited to 'rest_framework/tests')
-rw-r--r--rest_framework/tests/relations_nested.py35
1 files changed, 35 insertions, 0 deletions
diff --git a/rest_framework/tests/relations_nested.py b/rest_framework/tests/relations_nested.py
index 297538c4..b1147378 100644
--- a/rest_framework/tests/relations_nested.py
+++ b/rest_framework/tests/relations_nested.py
@@ -32,6 +32,20 @@ class ForeignKeyTargetSerializer(serializers.ModelSerializer):
model = ForeignKeyTarget
+# Nullable ForeignKey
+
+class NullableForeignKeySource(models.Model):
+ name = models.CharField(max_length=100)
+ target = models.ForeignKey(ForeignKeyTarget, null=True, blank=True,
+ related_name='nullable_sources')
+
+
+class NullableForeignKeySourceSerializer(serializers.ModelSerializer):
+ class Meta:
+ depth = 1
+ model = NullableForeignKeySource
+
+
class ReverseForeignKeyTests(TestCase):
def setUp(self):
target = ForeignKeyTarget(name='target-1')
@@ -65,3 +79,24 @@ class ReverseForeignKeyTests(TestCase):
]}
]
self.assertEquals(serializer.data, expected)
+
+
+class NestedNullableForeignKeyTests(TestCase):
+ def setUp(self):
+ target = ForeignKeyTarget(name='target-1')
+ target.save()
+ for idx in range(1, 4):
+ if idx == 3:
+ target = None
+ source = NullableForeignKeySource(name='source-%d' % idx, target=target)
+ source.save()
+
+ def test_foreign_key_retrieve_with_null(self):
+ queryset = NullableForeignKeySource.objects.all()
+ serializer = NullableForeignKeySourceSerializer(queryset)
+ expected = [
+ {'id': 1, 'name': u'source-1', 'target': {'id': 1, 'name': u'target-1'}},
+ {'id': 2, 'name': u'source-2', 'target': {'id': 1, 'name': u'target-1'}},
+ {'id': 3, 'name': u'source-3', 'target': None},
+ ]
+ self.assertEquals(serializer.data, expected)