Skip to content
Closed
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Add a non ID PK test (thanks to @benred42)
  • Loading branch information
xordoquy committed Jan 20, 2016
commit 15ec87ce7be19b206138f1080c0fa76cf050e5d8
33 changes: 33 additions & 0 deletions tests/test_model_serializer.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,15 @@ class ChoicesModel(models.Model):
choices_field_with_nonstandard_args = models.DecimalField(max_digits=3, decimal_places=1, choices=DECIMAL_CHOICES, verbose_name='A label')


class ParentModel(models.Model):
title = models.CharField(max_length=64)


class ChildModel(models.Model):
parent = models.ForeignKey(ParentModel, related_name='children')
value = models.CharField(primary_key=True, max_length=64)


class TestModelSerializer(TestCase):
def test_create_method(self):
class TestSerializer(serializers.ModelSerializer):
Expand Down Expand Up @@ -975,3 +984,27 @@ class Meta:
parent = PrimaryKeyRelatedField(queryset=TestParentModel.objects.all())
""")
self.assertEqual(unicode_repr(TestChildModelSerializer()), child_expected)

def test_nonID_PK_foreignkey_model_serializer(self):

class TestChildModelSerializer(serializers.ModelSerializer):
class Meta:
model = ChildModel
fields = ('value', 'parent')

class TestParentModelSerializer(serializers.ModelSerializer):
class Meta:
model = ParentModel
fields = ('id', 'title', 'children')

parent = ParentModel.objects.create(title='abc')
child = ChildModel.objects.create(value='def', parent=parent)

parent_serializer = TestParentModelSerializer(parent)
child_serializer = TestChildModelSerializer(child)

parent_expected = {u'children': [u'def'], u'id': 1, u'title': u'abc'}
self.assertEqual(parent_serializer.data, parent_expected)

child_expected = {u'parent': 1, u'value': u'def'}
self.assertEqual(child_serializer.data, child_expected)