  
          if match.view_name != self.view_name:
              raise ValidationError(self.error_messages['incorrect_match'])
  
          pk = match.kwargs.get(self.pk_url_kwarg, None)
          slug = match.kwargs.get(self.slug_url_kwarg, None)
  
          # Try explicit primary key.
          if pk is not None:
              queryset = self.queryset.filter(pk=pk)
          # Next, try looking up by slug.
          elif slug is not None:
              slug_field = self.get_slug_field()
              queryset = self.queryset.filter(**{slug_field: slug})
          # If none of those are defined, it's probably a configuation error.
          else:
              raise ValidationError(self.error_messages['configuration_error'])
  
          try:
              obj = queryset.get()
          except ObjectDoesNotExist:
              raise ValidationError(self.error_messages['does_not_exist'])
          except (TypeError, ValueError):
 
</s> remove             obj = queryset.get()
        except ObjectDoesNotExist:
 </s> add             return self.get_object(queryset, match.view_name,
                                   match.args, match.kwargs)
        except (ObjectDoesNotExist, TypeError, ValueError): </s> remove         except (TypeError, ValueError):
            msg = self.error_messages['incorrect_type']
            raise ValidationError(msg % type(value).__name__)

        return obj
 </s> add  </s> remove         if self.queryset is None:
 </s> add         queryset = self.queryset
        if queryset is None: </s> remove         kwargs = {self.pk_url_kwarg: obj.pk, self.slug_url_kwarg: slug}
 </s> add         Takes the matched URL conf arguments, and the queryset, and should
        return an object instance, or raise an `ObjectDoesNotExist` exception.
        """
        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()

        return queryset.get(**filter_kwargs)

    def to_native(self, obj):
        view_name = self.view_name
        request = self.context.get('request', None)
        format = self.format or self.context.get('format', None)

        if request is None:
            msg = (
                "Using `HyperlinkedRelatedField` without including the request "
                "in the serializer context is deprecated. "
                "Add `context={'request': request}` when instantiating "
                "the serializer."
            )
            warnings.warn(msg, DeprecationWarning, stacklevel=4)

        # If the object has not yet been saved then we cannot hyperlink to it.
        if getattr(obj, 'pk', None) is None:
            return

        # Return the hyperlink, or error if incorrectly configured.
  
          if match.view_name != self.view_name:
              raise ValidationError(self.error_messages['incorrect_match'])
  














          try:
              obj = queryset.get()
          except ObjectDoesNotExist:
              raise ValidationError(self.error_messages['does_not_exist'])
          except (TypeError, ValueError):
keep keep keep keep replace replace replace replace replace replace replace replace replace replace replace replace replace replace keep keep keep keep keep
 lookup_field on hyperlinked fields, and overriddable hyperlinked fields.  Closes #688 
rest_framework/relations.py