From 417c1d47e4a30763600785fa23141945545d9113 Mon Sep 17 00:00:00 2001 From: Boris Laporte Date: Wed, 4 Jul 2018 11:24:57 +0200 Subject: [PATCH 1/2] Allow ModelSerializers as children in ListField --- rest_framework/fields.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/rest_framework/fields.py b/rest_framework/fields.py index d6e363339..3a659028d 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -19,6 +19,7 @@ from django.core.validators import ( from django.forms import FilePathField as DjangoFilePathField from django.forms import ImageField as DjangoImageField from django.utils import six, timezone +from django.db import models from django.utils.dateparse import ( parse_date, parse_datetime, parse_duration, parse_time ) @@ -1653,7 +1654,8 @@ class ListField(Field): """ List of object instances -> List of dicts of primitive datatypes. """ - return [self.child.to_representation(item) if item is not None else None for item in data] + items = data.all() if isinstance(data, models.Manager) else data + return [self.child.to_representation(item) if item is not None else None for item in items] def run_child_validation(self, data): result = [] From 6ef55b3ab512b5230db0307f5fb2df70b0aa2b82 Mon Sep 17 00:00:00 2001 From: Boris Laporte Date: Wed, 4 Jul 2018 11:43:27 +0200 Subject: [PATCH 2/2] rearrange import order --- rest_framework/fields.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rest_framework/fields.py b/rest_framework/fields.py index 3a659028d..74fcf1305 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -16,10 +16,10 @@ from django.core.exceptions import ValidationError as DjangoValidationError from django.core.validators import ( EmailValidator, RegexValidator, URLValidator, ip_address_validators ) +from django.db import models from django.forms import FilePathField as DjangoFilePathField from django.forms import ImageField as DjangoImageField from django.utils import six, timezone -from django.db import models from django.utils.dateparse import ( parse_date, parse_datetime, parse_duration, parse_time )