From ad066e7ac2af78a886fef05a5bb3b24b62b90e3e Mon Sep 17 00:00:00 2001 From: Devon Bleibtrey Date: Sun, 22 Mar 2015 13:50:05 -0400 Subject: [PATCH] Added ability to define backend identification attribute --- rest_framework/relations.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/rest_framework/relations.py b/rest_framework/relations.py index 3a966c5bf..13668975c 100644 --- a/rest_framework/relations.py +++ b/rest_framework/relations.py @@ -166,6 +166,7 @@ class HyperlinkedRelatedField(RelatedField): self.lookup_field = kwargs.pop('lookup_field', self.lookup_field) self.lookup_url_kwarg = kwargs.pop('lookup_url_kwarg', self.lookup_field) self.format = kwargs.pop('format', None) + self.id_field = kwargs.pop('id_field', 'pk') # We include this simply for dependency injection in tests. # We can't add it as a class attributes or it would expect an @@ -196,7 +197,7 @@ class HyperlinkedRelatedField(RelatedField): attributes are not configured to correctly match the URL conf. """ # Unsaved objects will not yet have a valid URL. - if obj.pk is None: + if getattr(obj, self.id_field) is None: return None lookup_value = getattr(obj, self.lookup_field)