          # Handle unsaved object case
          if lookup_field is None:
              return None
  
          try:
              return reverse(view_name, kwargs=kwargs, request=request, format=format)
          except NoReverseMatch:
              pass
  
          if self.pk_url_kwarg != 'pk':
              # Only try pk lookup if it has been explicitly set.
              # Otherwise, the default `lookup_field = 'pk'` has us covered.
              kwargs = {self.pk_url_kwarg: obj.pk}
              try:
                  return reverse(view_name, kwargs=kwargs, request=request, format=format)
              except NoReverseMatch:
                  pass
  
          slug = getattr(obj, self.slug_field, None)
          if slug:
              # Only use slug lookup if a slug field exists on the model
              kwargs = {self.slug_url_kwarg: slug}
              try:
                  return reverse(view_name, kwargs=kwargs, request=request, format=format)
              except NoReverseMatch:
                  pass
  
          raise NoReverseMatch()
 
</s> remove         try:
            return reverse(view_name, kwargs=kwargs, request=request, format=format)
        except NoReverseMatch:
            pass

        if self.pk_url_kwarg != 'pk':
            # Only try pk if it has been explicitly set.
            # Otherwise, the default `lookup_field = 'pk'` has us covered.
            pk = obj.pk
            kwargs = {self.pk_url_kwarg: pk}
            try:
                return reverse(view_name, kwargs=kwargs, request=request, format=format)
            except NoReverseMatch:
                pass

        slug = getattr(obj, self.slug_field, None)
        if slug is not None:
            # Only try slug if it corresponds to an attribute on the object.
            kwargs = {self.slug_url_kwarg: slug}
            try:
                ret = reverse(view_name, kwargs=kwargs, request=request, format=format)
                if self.slug_field == 'slug' and self.slug_url_kwarg == 'slug':
                    # If the lookup succeeds using the default slug params,
                    # then `slug_field` is being used implicitly, and we
                    # we need to warn about the pending deprecation.
                    msg = 'Implicit slug field hyperlinked fields are deprecated.' \
                          'You should set `lookup_field=slug` on the HyperlinkedRelatedField.'
                    warnings.warn(msg, DeprecationWarning, stacklevel=2)
                return ret
            except NoReverseMatch:
                pass

        raise NoReverseMatch()
 </s> add         return reverse(view_name, kwargs=kwargs, request=request, format=format) </s> remove         lookup = self.kwargs.get(lookup_url_kwarg, None)
        pk = self.kwargs.get(self.pk_url_kwarg, None)
        slug = self.kwargs.get(self.slug_url_kwarg, None)
        slug_field = slug and self.slug_field or None

        if lookup:
            setattr(obj, self.lookup_field, lookup)

        if pk:
            setattr(obj, 'pk', pk)
 </s> add         lookup_value = self.kwargs[lookup_url_kwarg] </s> remove         # Determine the base queryset to use.
        if queryset is None:
            queryset = self.filter_queryset(self.get_queryset())
        else:
            pass  # Deprecation warning
 </s> add         queryset = self.filter_queryset(self.get_queryset()) </s> remove     # These are all deprecated
    pk_url_kwarg = 'pk'
    slug_field = 'slug'
    slug_url_kwarg = None  # Defaults to same as `slug_field` unless overridden

 </s> add  </s> remove         lookup = view_kwargs.get(self.lookup_field, None)
        pk = view_kwargs.get(self.pk_url_kwarg, None)
        slug = view_kwargs.get(self.slug_url_kwarg, None)

        if lookup is not None:
            filter_kwargs = {self.lookup_field: lookup}
        elif pk is not None:
            filter_kwargs = {'pk': pk}
        elif slug is not None:
            filter_kwargs = {self.slug_field: slug}
        else:
            raise ObjectDoesNotExist()

 </s> add         lookup_value = view_kwargs[self.lookup_field]
        filter_kwargs = {self.lookup_field: lookup_value}
        return reverse(view_name, kwargs=kwargs, request=request, format=format)
          # Handle unsaved object case
          if lookup_field is None:
              return None
  
        return reverse(view_name, kwargs=kwargs, request=request, format=format)
        return reverse(view_name, kwargs=kwargs, request=request, format=format)
        return reverse(view_name, kwargs=kwargs, request=request, format=format)
        return reverse(view_name, kwargs=kwargs, request=request, format=format)
        return reverse(view_name, kwargs=kwargs, request=request, format=format)
        return reverse(view_name, kwargs=kwargs, request=request, format=format)
        return reverse(view_name, kwargs=kwargs, request=request, format=format)
        return reverse(view_name, kwargs=kwargs, request=request, format=format)
        return reverse(view_name, kwargs=kwargs, request=request, format=format)
        return reverse(view_name, kwargs=kwargs, request=request, format=format)
        return reverse(view_name, kwargs=kwargs, request=request, format=format)
        return reverse(view_name, kwargs=kwargs, request=request, format=format)
        return reverse(view_name, kwargs=kwargs, request=request, format=format)
        return reverse(view_name, kwargs=kwargs, request=request, format=format)
        return reverse(view_name, kwargs=kwargs, request=request, format=format)
        return reverse(view_name, kwargs=kwargs, request=request, format=format)
        return reverse(view_name, kwargs=kwargs, request=request, format=format)
        return reverse(view_name, kwargs=kwargs, request=request, format=format)
        return reverse(view_name, kwargs=kwargs, request=request, format=format)
        return reverse(view_name, kwargs=kwargs, request=request, format=format)
        return reverse(view_name, kwargs=kwargs, request=request, format=format)
        return reverse(view_name, kwargs=kwargs, request=request, format=format)
        return reverse(view_name, kwargs=kwargs, request=request, format=format)
        return reverse(view_name, kwargs=kwargs, request=request, format=format)
keep keep keep keep replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace
 Remove `pk_url_field`, `slug_url_field`, `slug_field`.

Closes #1773. 
rest_framework/relations.py