mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-02-17 03:51:03 +03:00
Merge pull request #1318 from sheppard/generic-dj16
saving nested generic relation serializers broken in django 1.6
This commit is contained in:
commit
2921455ea7
|
@ -894,7 +894,7 @@ class ModelSerializer(Serializer):
|
|||
m2m_data[field_name] = attrs.pop(field_name)
|
||||
|
||||
# Forward m2m relations
|
||||
for field in meta.many_to_many:
|
||||
for field in meta.many_to_many + meta.virtual_fields:
|
||||
if field.name in attrs:
|
||||
m2m_data[field.name] = attrs.pop(field.name)
|
||||
|
||||
|
|
|
@ -69,6 +69,35 @@ class TestGenericRelations(TestCase):
|
|||
}
|
||||
self.assertEqual(serializer.data, expected)
|
||||
|
||||
def test_generic_nested_relation(self):
|
||||
"""
|
||||
Test saving a GenericRelation field via a nested serializer.
|
||||
"""
|
||||
|
||||
class TagSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Tag
|
||||
exclude = ('content_type', 'object_id')
|
||||
|
||||
class BookmarkSerializer(serializers.ModelSerializer):
|
||||
tags = TagSerializer()
|
||||
|
||||
class Meta:
|
||||
model = Bookmark
|
||||
exclude = ('id',)
|
||||
|
||||
data = {
|
||||
'url': 'https://docs.djangoproject.com/',
|
||||
'tags': [
|
||||
{'tag': 'contenttypes'},
|
||||
{'tag': 'genericrelations'},
|
||||
]
|
||||
}
|
||||
serializer = BookmarkSerializer(data=data)
|
||||
self.assertTrue(serializer.is_valid())
|
||||
serializer.save()
|
||||
self.assertEqual(serializer.object.tags.count(), 2)
|
||||
|
||||
def test_generic_fk(self):
|
||||
"""
|
||||
Test a relationship that spans a GenericForeignKey field.
|
||||
|
|
Loading…
Reference in New Issue
Block a user