diff options
| author | Tom Christie | 2013-12-10 08:46:44 +0000 |
|---|---|---|
| committer | Tom Christie | 2013-12-10 08:46:44 +0000 |
| commit | 3a1c40f81488c241cb64860d6cc510f8e71c0c40 (patch) | |
| tree | f483fa39400707f2849b8ae3644ae370f6e68154 /rest_framework/serializers.py | |
| parent | 785a42cd5aee9e96f9b780ff144fa13c16189748 (diff) | |
| download | django-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.py | 8 |
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: |
