diff options
| author | Tom Christie | 2013-02-12 23:03:04 +0000 | 
|---|---|---|
| committer | Tom Christie | 2013-02-12 23:03:04 +0000 | 
| commit | 018298deb89628b39e1caeceecb414c1e27310da (patch) | |
| tree | b363c9b146091e2b4971c0652561901e349a54a2 /rest_framework | |
| parent | f341ead49944050b7902254ed4c89b3c9c11a018 (diff) | |
| download | django-rest-framework-018298deb89628b39e1caeceecb414c1e27310da.tar.bz2 | |
Relational fields use same field_to_native logic as regular fields.
Fixes #637. Closes #638.
Diffstat (limited to 'rest_framework')
| -rw-r--r-- | rest_framework/relations.py | 13 | 
1 files changed, 11 insertions, 2 deletions
diff --git a/rest_framework/relations.py b/rest_framework/relations.py index 24e8e15c..0c108717 100644 --- a/rest_framework/relations.py +++ b/rest_framework/relations.py @@ -5,7 +5,7 @@ from django import forms  from django.forms import widgets  from django.forms.models import ModelChoiceIterator  from django.utils.translation import ugettext_lazy as _ -from rest_framework.fields import Field, WritableField +from rest_framework.fields import Field, WritableField, get_component  from rest_framework.reverse import reverse  from rest_framework.compat import urlparse  from rest_framework.compat import smart_text @@ -116,7 +116,16 @@ class RelatedField(WritableField):      def field_to_native(self, obj, field_name):          try: -            value = getattr(obj, self.source or field_name) +            if self.source == '*': +                return self.to_native(obj) + +            source = self.source or field_name +            value = obj + +            for component in source.split('.'): +                value = get_component(value, component) +                if value is None: +                    break          except ObjectDoesNotExist:              return None  | 
