mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-07-27 08:29:59 +03:00
add QuerySet case in ListSerializer.to_representation method
This commit is contained in:
parent
54d52c66fd
commit
d74d206bc4
|
@ -679,9 +679,18 @@ class ListSerializer(BaseSerializer):
|
||||||
"""
|
"""
|
||||||
List of object instances -> List of dicts of primitive datatypes.
|
List of object instances -> List of dicts of primitive datatypes.
|
||||||
"""
|
"""
|
||||||
# Dealing with nested relationships, data can be a Manager,
|
|
||||||
# so, first get a queryset from the Manager if needed
|
# check for additional instance attributes
|
||||||
iterable = data.all() if isinstance(data, models.Manager) else data
|
reload_queryset_class = (models.Manager,)
|
||||||
|
if isinstance(data, models.QuerySet):
|
||||||
|
for qs_first in data:
|
||||||
|
if qs_first.__class__().__dict__.keys() == qs_first.__dict__.keys():
|
||||||
|
reload_queryset_class.append(models.QuerySet)
|
||||||
|
break
|
||||||
|
|
||||||
|
# Dealing with nested relationships, data can be a Manager or a QuerySet,
|
||||||
|
# so, first get a queryset from the Manager/QuerySet if needed
|
||||||
|
iterable = data.all() if isinstance(data, reload_queryset_class) else data
|
||||||
|
|
||||||
return [
|
return [
|
||||||
self.child.to_representation(item) for item in iterable
|
self.child.to_representation(item) for item in iterable
|
||||||
|
|
Loading…
Reference in New Issue
Block a user