diff options
| author | Marko Tibold | 2012-11-10 12:23:19 +0100 |
|---|---|---|
| committer | Marko Tibold | 2012-11-10 12:23:19 +0100 |
| commit | 2a2ce406bc9f2ff37bd789db55e373a6447d6069 (patch) | |
| tree | b4bb615e788ceb5c1a6ab9cabb9aa73c1683ade2 /rest_framework | |
| parent | df689a7442ee41e3922229397e174785619e1124 (diff) | |
| download | django-rest-framework-2a2ce406bc9f2ff37bd789db55e373a6447d6069.tar.bz2 | |
Fixes #380
Diffstat (limited to 'rest_framework')
| -rw-r--r-- | rest_framework/fields.py | 5 | ||||
| -rw-r--r-- | rest_framework/tests/hyperlinkedserializers.py | 6 |
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) |
