diff options
| author | Tom Christie | 2012-09-30 17:31:28 +0100 | 
|---|---|---|
| committer | Tom Christie | 2012-09-30 17:31:28 +0100 | 
| commit | 6fa589fefd48d98e4f0a11548b6c3e5ced58e31e (patch) | |
| tree | a5d1dd75ce6d5c5be7bf81b386a29c13235d33ff /rest_framework/fields.py | |
| parent | 43d3634e892e303ca377265d3176e8313f19563f (diff) | |
| download | django-rest-framework-6fa589fefd48d98e4f0a11548b6c3e5ced58e31e.tar.bz2 | |
Pagination support
Diffstat (limited to 'rest_framework/fields.py')
| -rw-r--r-- | rest_framework/fields.py | 14 | 
1 files changed, 10 insertions, 4 deletions
diff --git a/rest_framework/fields.py b/rest_framework/fields.py index eab90617..74675ee9 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -139,7 +139,13 @@ class Field(object):          if hasattr(self, 'model_field'):              return self.to_native(self.model_field._get_val_from_obj(obj)) -        return self.to_native(getattr(obj, self.source or field_name)) +        if self.source: +            value = obj +            for component in self.source.split('.'): +                value = getattr(value, component) +        else: +            value = getattr(obj, field_name) +        return self.to_native(value)      def to_native(self, value):          """ @@ -175,7 +181,7 @@ class RelatedField(Field):      """      def field_to_native(self, obj, field_name): -        obj = getattr(obj, field_name) +        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) @@ -215,10 +221,10 @@ class PrimaryKeyRelatedField(RelatedField):      def field_to_native(self, obj, field_name):          try: -            obj = obj.serializable_value(field_name) +            obj = obj.serializable_value(self.source or field_name)          except AttributeError:              field = obj._meta.get_field_by_name(field_name)[0] -            obj = getattr(obj, field_name) +            obj = getattr(obj, self.source or field_name)              if obj.__class__.__name__ == 'RelatedManager':                  return [self.to_native(item.pk) for item in obj.all()]              elif isinstance(field, RelatedObject):  | 
