mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-02 19:40:13 +03:00
Merge 86d25ece15
into f92d8bd972
This commit is contained in:
commit
bd8d2a3cbe
|
@ -125,6 +125,9 @@ class RelatedField(WritableField):
|
|||
|
||||
### Regular serializer stuff...
|
||||
|
||||
def many_to_native(self, objects):
|
||||
return [self.to_native(item) for item in objects]
|
||||
|
||||
def field_to_native(self, obj, field_name):
|
||||
try:
|
||||
if self.source == '*':
|
||||
|
@ -145,11 +148,11 @@ class RelatedField(WritableField):
|
|||
|
||||
if self.many:
|
||||
if is_simple_callable(getattr(value, 'all', None)):
|
||||
return [self.to_native(item) for item in value.all()]
|
||||
return self.many_to_native(value.all())
|
||||
else:
|
||||
# Also support non-queryset iterables.
|
||||
# This allows us to also support plain lists of related items.
|
||||
return [self.to_native(item) for item in value]
|
||||
return self.many_to_native(value)
|
||||
return self.to_native(value)
|
||||
|
||||
def field_from_native(self, data, files, field_name, into):
|
||||
|
|
|
@ -326,6 +326,9 @@ class BaseSerializer(WritableField):
|
|||
|
||||
return ret
|
||||
|
||||
def many_to_native(self, objects):
|
||||
return [self.to_native(item) for item in objects]
|
||||
|
||||
def from_native(self, data, files):
|
||||
"""
|
||||
Deserialize primitives -> objects.
|
||||
|
@ -372,7 +375,7 @@ class BaseSerializer(WritableField):
|
|||
return None
|
||||
|
||||
if is_simple_callable(getattr(value, 'all', None)):
|
||||
return [self.to_native(item) for item in value.all()]
|
||||
return self.many_to_native(value.all())
|
||||
|
||||
if value is None:
|
||||
return None
|
||||
|
@ -383,7 +386,7 @@ class BaseSerializer(WritableField):
|
|||
many = hasattr(value, '__iter__') and not isinstance(value, (Page, dict, six.text_type))
|
||||
|
||||
if many:
|
||||
return [self.to_native(item) for item in value]
|
||||
return self.many_to_native(value)
|
||||
return self.to_native(value)
|
||||
|
||||
def field_from_native(self, data, files, field_name, into):
|
||||
|
@ -527,7 +530,7 @@ class BaseSerializer(WritableField):
|
|||
DeprecationWarning, stacklevel=2)
|
||||
|
||||
if many:
|
||||
self._data = [self.to_native(item) for item in obj]
|
||||
self._data = self.many_to_native(obj)
|
||||
else:
|
||||
self._data = self.to_native(obj)
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user