Commit 462c5e3d by Tom Christie

Merge pull request #1280 from tomchristie/fix-1205

Refine model manager behavior so as not to use the behavior in incorrect...
parents 785a42cd c09ad1be
...@@ -43,6 +43,7 @@ You can determine your currently installed version using `pip freeze`: ...@@ -43,6 +43,7 @@ You can determine your currently installed version using `pip freeze`:
### Master ### Master
* JSON renderer now deals with objects that implement a dict-like interface. * JSON renderer now deals with objects that implement a dict-like interface.
* Bugfix: Refine behavior that calls model manager `all()` across nested serializer relationships, preventing erronous behavior with some non-ORM objects, and preventing unneccessary queryset re-evaluations.
### 2.3.10 ### 2.3.10
......
...@@ -412,7 +412,13 @@ class BaseSerializer(WritableField): ...@@ -412,7 +412,13 @@ class BaseSerializer(WritableField):
# Set the serializer object if it exists # 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 = 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 self.source == '*':
if value: if value:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment