mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-04 20:40:14 +03:00
Initial work at implementing ReturnDict and ReturnList for nested serializers.
This commit is contained in:
parent
5b671cb515
commit
32647eda1f
|
@ -363,6 +363,8 @@ class Serializer(BaseSerializer):
|
|||
attribute = field.get_attribute(instance)
|
||||
if attribute is None:
|
||||
value = None
|
||||
elif isinstance(field, Serializer):
|
||||
value = field.__class__(attribute).data
|
||||
else:
|
||||
value = field.to_representation(attribute)
|
||||
transform_method = getattr(self, 'transform_' + field.field_name, None)
|
||||
|
@ -479,9 +481,11 @@ class ListSerializer(BaseSerializer):
|
|||
List of object instances -> List of dicts of primitive datatypes.
|
||||
"""
|
||||
iterable = data.all() if (hasattr(data, 'all')) else data
|
||||
return [
|
||||
self.child.to_representation(item) for item in iterable
|
||||
]
|
||||
if isinstance(self.child, Serializer):
|
||||
serializer = self.child.__class__
|
||||
return [serializer(item).data for item in iterable]
|
||||
else:
|
||||
return [self.child.to_representation(item) for item in iterable]
|
||||
|
||||
def update(self, instance, validated_data):
|
||||
raise NotImplementedError(
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
from rest_framework import serializers
|
||||
from rest_framework.utils.serializer_helpers import ReturnDict
|
||||
|
||||
|
||||
class TestNestedSerializer:
|
||||
|
@ -39,6 +40,20 @@ class TestNestedSerializer:
|
|||
serializer = self.Serializer()
|
||||
assert serializer.data == expected_data
|
||||
|
||||
def test_nested_field_uses_return_dict(self):
|
||||
input_data = {
|
||||
'nested': {
|
||||
'one': '1',
|
||||
'two': '2',
|
||||
}
|
||||
}
|
||||
serializer = self.Serializer(input_data)
|
||||
assert isinstance(serializer.data['nested'], ReturnDict)
|
||||
|
||||
def test_empty_nested_field_uses_return_dict(self):
|
||||
serializer = self.Serializer()
|
||||
assert isinstance(serializer.data['nested'], ReturnDict)
|
||||
|
||||
# """
|
||||
# Tests to cover nested serializers.
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user