aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/relations.py
diff options
context:
space:
mode:
authorTom Christie2013-05-18 03:38:36 -0700
committerTom Christie2013-05-18 03:38:36 -0700
commit9fe6a103ec8d43eded7089f7d0c75a49ca45bb3b (patch)
treec146c9d9f5204e6548a16cb7dd7cffc248f56b75 /rest_framework/relations.py
parenta73c16b85f79aeb9139734a64623b49bc169fce9 (diff)
parentc992b600f7b0aefb156cddb5e27b438ccc316b39 (diff)
downloaddjango-rest-framework-9fe6a103ec8d43eded7089f7d0c75a49ca45bb3b.tar.bz2
Merge pull request #694 from craigds/master
fix function names and dotted lookups for use in PrimaryKeyRelatedField
Diffstat (limited to 'rest_framework/relations.py')
-rw-r--r--rest_framework/relations.py16
1 files changed, 12 insertions, 4 deletions
diff --git a/rest_framework/relations.py b/rest_framework/relations.py
index c4b790d4..884b954c 100644
--- a/rest_framework/relations.py
+++ b/rest_framework/relations.py
@@ -221,12 +221,20 @@ class PrimaryKeyRelatedField(RelatedField):
def field_to_native(self, obj, field_name):
if self.many:
# To-many relationship
- try:
+
+ queryset = None
+ if not self.source:
# Prefer obj.serializable_value for performance reasons
- queryset = obj.serializable_value(self.source or field_name)
- except AttributeError:
+ try:
+ queryset = obj.serializable_value(field_name)
+ except AttributeError:
+ pass
+ if queryset is None:
# RelatedManager (reverse relationship)
- queryset = getattr(obj, self.source or field_name)
+ source = self.source or field_name
+ queryset = obj
+ for component in source.split('.'):
+ queryset = get_component(queryset, component)
# Forward relationship
return [self.to_native(item.pk) for item in queryset.all()]