aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/relations.py
diff options
context:
space:
mode:
authorTom Christie2013-08-30 09:28:33 +0100
committerTom Christie2013-08-30 09:28:33 +0100
commit9a5b2eefa92dede844ab94d049093e91ac98af5b (patch)
treefaf389e2f8c8296aeaa486ab97ed0be9113cc2ba /rest_framework/relations.py
parentbf07b8e616bd92e4ae3c2c09b198181d7075e6bd (diff)
parentf3ab0b2b1d5734314dbe3cdd13cd7c4f0531bf7d (diff)
downloaddjango-rest-framework-9a5b2eefa92dede844ab94d049093e91ac98af5b.tar.bz2
Merge master
Diffstat (limited to 'rest_framework/relations.py')
-rw-r--r--rest_framework/relations.py11
1 files changed, 9 insertions, 2 deletions
diff --git a/rest_framework/relations.py b/rest_framework/relations.py
index f1f7dea7..417925b5 100644
--- a/rest_framework/relations.py
+++ b/rest_framework/relations.py
@@ -126,9 +126,9 @@ class RelatedField(WritableField):
value = obj
for component in source.split('.'):
- value = get_component(value, component)
if value is None:
break
+ value = get_component(value, component)
except ObjectDoesNotExist:
return None
@@ -236,6 +236,8 @@ class PrimaryKeyRelatedField(RelatedField):
source = self.source or field_name
queryset = obj
for component in source.split('.'):
+ if queryset is None:
+ return []
queryset = get_component(queryset, component)
# Forward relationship
@@ -556,8 +558,13 @@ class HyperlinkedIdentityField(Field):
May raise a `NoReverseMatch` if the `view_name` and `lookup_field`
attributes are not configured to correctly match the URL conf.
"""
- lookup_field = getattr(obj, self.lookup_field)
+ lookup_field = getattr(obj, self.lookup_field, None)
kwargs = {self.lookup_field: lookup_field}
+
+ # Handle unsaved object case
+ if lookup_field is None:
+ return None
+
try:
return reverse(view_name, kwargs=kwargs, request=request, format=format)
except NoReverseMatch: