diff options
| author | Tom Christie | 2013-02-12 22:59:01 +0000 | 
|---|---|---|
| committer | Tom Christie | 2013-02-12 22:59:01 +0000 | 
| commit | f505b2e4404a58c9d841ee96e560955eb545fede (patch) | |
| tree | 5299f9170935508b8ddf4aa56ad6ff44c3958773 | |
| parent | 724906c516b71f3ec5bc2005c66a6145c77c3739 (diff) | |
| download | django-rest-framework-f505b2e4404a58c9d841ee96e560955eb545fede.tar.bz2 | |
Clean up field_to_native logic
| -rw-r--r-- | rest_framework/fields.py | 14 | 
1 files changed, 8 insertions, 6 deletions
diff --git a/rest_framework/fields.py b/rest_framework/fields.py index aa6fa3ab..327008fb 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -94,12 +94,14 @@ class Field(object):          if self.source == '*':              return self.to_native(obj) -        if self.source: -            value = obj -            for component in self.source.split('.'): -                value = get_component(value, component) -        else: -            value = get_component(obj, field_name) +        source = self.source or field_name +        value = obj + +        for component in source.split('.'): +            value = get_component(value, component) +            if value is None: +                break +          return self.to_native(value)      def to_native(self, value):  | 
