aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/serializers.py
diff options
context:
space:
mode:
Diffstat (limited to 'rest_framework/serializers.py')
-rw-r--r--rest_framework/serializers.py17
1 files changed, 10 insertions, 7 deletions
diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py
index c60574d4..2eef6eeb 100644
--- a/rest_framework/serializers.py
+++ b/rest_framework/serializers.py
@@ -13,6 +13,7 @@ response content is handled by parsers and renderers.
from __future__ import unicode_literals
from django.db import models
from django.db.models.fields import FieldDoesNotExist, Field as DjangoModelField
+from django.db.models import query
from django.utils.translation import ugettext_lazy as _
from rest_framework.compat import postgres_fields, unicode_to_repr
from rest_framework.utils import model_meta
@@ -336,8 +337,8 @@ class Serializer(BaseSerializer):
return OrderedDict([
(field_name, field.get_value(self.initial_data))
for field_name, field in self.fields.items()
- if field.get_value(self.initial_data) is not empty
- and not field.read_only
+ if (field.get_value(self.initial_data) is not empty) and
+ not field.read_only
])
return OrderedDict([
@@ -562,7 +563,7 @@ class ListSerializer(BaseSerializer):
"""
# Dealing with nested relationships, data can be a Manager,
# so, first get a queryset from the Manager if needed
- iterable = data.all() if isinstance(data, models.Manager) else data
+ iterable = data.all() if isinstance(data, (models.Manager, query.QuerySet)) else data
return [
self.child.to_representation(item) for item in iterable
]
@@ -653,8 +654,9 @@ def raise_errors_on_nested_writes(method_name, serializer, validated_data):
# ...
# profile = ProfileSerializer()
assert not any(
- isinstance(field, BaseSerializer) and (key in validated_data)
- and isinstance(validated_data[key], (list, dict))
+ isinstance(field, BaseSerializer) and
+ (key in validated_data) and
+ isinstance(validated_data[key], (list, dict))
for key, field in serializer.fields.items()
), (
'The `.{method_name}()` method does not support writable nested'
@@ -673,8 +675,9 @@ def raise_errors_on_nested_writes(method_name, serializer, validated_data):
# ...
# address = serializer.CharField('profile.address')
assert not any(
- '.' in field.source and (key in validated_data)
- and isinstance(validated_data[key], (list, dict))
+ '.' in field.source and
+ (key in validated_data) and
+ isinstance(validated_data[key], (list, dict))
for key, field in serializer.fields.items()
), (
'The `.{method_name}()` method does not support writable dotted-source '