diff options
| author | Marko Tibold | 2012-10-22 20:09:36 +0200 |
|---|---|---|
| committer | Marko Tibold | 2012-10-22 20:09:36 +0200 |
| commit | d1e05ea8d4b5d7f94bde9a574196505aa823a6ff (patch) | |
| tree | cf155b8a239644243d8198c69ec15070627b4ed8 /rest_framework/serializers.py | |
| parent | ab1a12bfecf49061cb31dff05add26d96078771e (diff) | |
| parent | 95a670de41a246777bc1e448dca8cc576b7b86ea (diff) | |
| download | django-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.py | 23 |
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. |
