Added ability to define backend identification attribute

This commit is contained in:
Devon Bleibtrey 2015-03-22 13:50:05 -04:00
parent c9618cc0f3
commit 8a58b1a380

View File

@ -166,6 +166,7 @@ class HyperlinkedRelatedField(RelatedField):
self.lookup_field = kwargs.pop('lookup_field', self.lookup_field) self.lookup_field = kwargs.pop('lookup_field', self.lookup_field)
self.lookup_url_kwarg = kwargs.pop('lookup_url_kwarg', self.lookup_field) self.lookup_url_kwarg = kwargs.pop('lookup_url_kwarg', self.lookup_field)
self.format = kwargs.pop('format', None) self.format = kwargs.pop('format', None)
self.id_field = kwargs.pop('id_field', 'pk')
# We include this simply for dependency injection in tests. # We include this simply for dependency injection in tests.
# We can't add it as a class attributes or it would expect an # 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. attributes are not configured to correctly match the URL conf.
""" """
# Unsaved objects will not yet have a valid URL. # Unsaved objects will not yet have a valid URL.
if obj.pk is None: if getattr(obj, self.id_field) is None:
return None return None
lookup_value = getattr(obj, self.lookup_field) lookup_value = getattr(obj, self.lookup_field)