aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/serializers.py
diff options
context:
space:
mode:
authorMarko Tibold2012-10-22 20:09:36 +0200
committerMarko Tibold2012-10-22 20:09:36 +0200
commitd1e05ea8d4b5d7f94bde9a574196505aa823a6ff (patch)
treecf155b8a239644243d8198c69ec15070627b4ed8 /rest_framework/serializers.py
parentab1a12bfecf49061cb31dff05add26d96078771e (diff)
parent95a670de41a246777bc1e448dca8cc576b7b86ea (diff)
downloaddjango-rest-framework-d1e05ea8d4b5d7f94bde9a574196505aa823a6ff.tar.bz2
Merge commit '95a670de41a246777bc1e448dca8cc576b7b86ea' into BrowsableAPIRenderer
Conflicts: rest_framework/renderers.py - manually resolved conflict
Diffstat (limited to 'rest_framework/serializers.py')
-rw-r--r--rest_framework/serializers.py23
1 files changed, 13 insertions, 10 deletions
diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py
index 6724bbdf..221cbf2f 100644
--- a/rest_framework/serializers.py
+++ b/rest_framework/serializers.py
@@ -247,6 +247,19 @@ class BaseSerializer(Field):
if not self._errors:
return self.restore_object(attrs, instance=getattr(self, 'object', None))
+ def field_to_native(self, obj, field_name):
+ """
+ Override default so that we can apply ModelSerializer as a nested
+ field to relationships.
+ """
+ obj = getattr(obj, self.source or field_name)
+
+ # If the object has an "all" method, assume it's a relationship
+ if is_simple_callable(getattr(obj, 'all', None)):
+ return [self.to_native(item) for item in obj.all()]
+
+ return self.to_native(obj)
+
@property
def errors(self):
"""
@@ -295,16 +308,6 @@ class ModelSerializer(Serializer):
"""
_options_class = ModelSerializerOptions
- def field_to_native(self, obj, field_name):
- """
- Override default so that we can apply ModelSerializer as a nested
- field to relationships.
- """
- obj = getattr(obj, self.source or field_name)
- if obj.__class__.__name__ in ('RelatedManager', 'ManyRelatedManager'):
- return [self.to_native(item) for item in obj.all()]
- return self.to_native(obj)
-
def default_fields(self, serialize, obj=None, data=None, nested=False):
"""
Return all the fields that should be serialized for the model.