aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework
diff options
context:
space:
mode:
authorMarko Tibold2012-11-10 12:23:19 +0100
committerMarko Tibold2012-11-10 12:23:19 +0100
commit2a2ce406bc9f2ff37bd789db55e373a6447d6069 (patch)
treeb4bb615e788ceb5c1a6ab9cabb9aa73c1683ade2 /rest_framework
parentdf689a7442ee41e3922229397e174785619e1124 (diff)
downloaddjango-rest-framework-2a2ce406bc9f2ff37bd789db55e373a6447d6069.tar.bz2
Fixes #380
Diffstat (limited to 'rest_framework')
-rw-r--r--rest_framework/fields.py5
-rw-r--r--rest_framework/tests/hyperlinkedserializers.py6
2 files changed, 7 insertions, 4 deletions
diff --git a/rest_framework/fields.py b/rest_framework/fields.py
index a4e29a30..4c206426 100644
--- a/rest_framework/fields.py
+++ b/rest_framework/fields.py
@@ -522,7 +522,10 @@ class HyperlinkedRelatedField(RelatedField):
view_name = self.view_name
request = self.context.get('request', None)
format = self.format or self.context.get('format', None)
- kwargs = {self.pk_url_kwarg: obj.pk}
+ pk = getattr(obj, 'pk', None)
+ if pk is None:
+ return
+ kwargs = {self.pk_url_kwarg: pk}
try:
return reverse(view_name, kwargs=kwargs, request=request, format=format)
except:
diff --git a/rest_framework/tests/hyperlinkedserializers.py b/rest_framework/tests/hyperlinkedserializers.py
index 3a955ddf..5ab850af 100644
--- a/rest_framework/tests/hyperlinkedserializers.py
+++ b/rest_framework/tests/hyperlinkedserializers.py
@@ -224,11 +224,12 @@ class TestOptionalRelationHyperlinkedView(TestCase):
def setUp(self):
"""
- Create 1 OptionaRelationModel intances.
+ Create 1 OptionalRelationModel intances.
"""
OptionalRelationModel().save()
self.objects = OptionalRelationModel.objects
self.detail_view = OptionalRelationDetail.as_view()
+ self.data = {"url": "http://testserver/optionalrelation/1/", "other": None}
def test_get_detail_view(self):
"""
@@ -238,5 +239,4 @@ class TestOptionalRelationHyperlinkedView(TestCase):
request = factory.get('/optionalrelationmodel-detail/1')
response = self.detail_view(request, pk=1).render()
self.assertEquals(response.status_code, status.HTTP_200_OK)
-
-
+ self.assertEquals(response.data, self.data)