aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/serializers.py
diff options
context:
space:
mode:
authorTom Christie2013-12-10 08:46:44 +0000
committerTom Christie2013-12-10 08:46:44 +0000
commit3a1c40f81488c241cb64860d6cc510f8e71c0c40 (patch)
treef483fa39400707f2849b8ae3644ae370f6e68154 /rest_framework/serializers.py
parent785a42cd5aee9e96f9b780ff144fa13c16189748 (diff)
downloaddjango-rest-framework-3a1c40f81488c241cb64860d6cc510f8e71c0c40.tar.bz2
Refine model manager behavior so as not to use the behavior in incorrect cases. Closes #1205
Diffstat (limited to 'rest_framework/serializers.py')
-rw-r--r--rest_framework/serializers.py8
1 files changed, 7 insertions, 1 deletions
diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py
index 44e4b04b..0d35fb32 100644
--- a/rest_framework/serializers.py
+++ b/rest_framework/serializers.py
@@ -412,7 +412,13 @@ class BaseSerializer(WritableField):
# Set the serializer object if it exists
obj = get_component(self.parent.object, self.source or field_name) if self.parent.object else None
- obj = obj.all() if is_simple_callable(getattr(obj, 'all', None)) else obj
+
+ # If we have a model manager or similar object then we need
+ # to iterate through each instance.
+ if (self.many and
+ not hasattr(obj, '__iter__') and
+ is_simple_callable(getattr(obj, 'all', None))):
+ obj = obj.all()
if self.source == '*':
if value: