This commit is contained in:
Jeffrey 2017-04-19 23:22:23 +00:00 committed by GitHub
commit 4c1a48ac32

View File

@ -307,6 +307,22 @@ class HyperlinkedRelatedField(RelatedField):
return None
lookup_value = getattr(obj, self.lookup_field)
import numbers
from django.utils import six
if lookup_value is not None and not isinstance(lookup_value, six.string_types) and not isinstance(lookup_value,
numbers.Number):
try:
lookup_value = getattr(lookup_value, self.lookup_url_kwarg)
except Exception:
lookup_value = getattr(lookup_value, 'pk')
if lookup_value is None or (not isinstance(lookup_value, six.string_types) and not isinstance(lookup_value,
numbers.Number)) or '' == lookup_value:
return None
kwargs = {self.lookup_url_kwarg: lookup_value}
return self.reverse(view_name, kwargs=kwargs, request=request, format=format)