diff --git a/pandoc-1.19.2.1-osx.pkg b/pandoc-1.19.2.1-osx.pkg new file mode 100644 index 000000000..fced155ca Binary files /dev/null and b/pandoc-1.19.2.1-osx.pkg differ diff --git a/rest_framework/relations.py b/rest_framework/relations.py index 4d3bdba1d..f16f00c88 100644 --- a/rest_framework/relations.py +++ b/rest_framework/relations.py @@ -12,7 +12,7 @@ from django.utils.encoding import ( ) from django.utils.six.moves.urllib import parse as urlparse from django.utils.translation import ugettext_lazy as _ - +from django.utils.http import urlencode from rest_framework.compat import ( NoReverseMatch, Resolver404, get_script_prefix, resolve ) @@ -417,6 +417,16 @@ class HyperlinkedIdentityField(HyperlinkedRelatedField): # to run the 'only get the pk for this relationship' code. return False +class QueryParameterHyperlinkedIdentityField(HyperlinkedIdentityField): + def __init__(self, query_params, **kwargs): + super(QueryParameterHyperlinkedIdentityField, self).__init__(**kwargs) + self.query_params = query_params + + def get_url(self, obj, view_name, request, format): + url = super(QueryParameterHyperlinkedIdentityField, self).get_url(obj, view_name, request, format) + if len(self.query_params) > 0: + url += "?"+urlencode({k: getattr(obj, v) for k,v in self.query_params.items()}) + return url class SlugRelatedField(RelatedField): """ diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index a4b51ae9d..ef7fd72f7 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -60,7 +60,7 @@ from rest_framework.fields import ( # NOQA # isort:skip SerializerMethodField, SlugField, TimeField, URLField, UUIDField, ) from rest_framework.relations import ( # NOQA # isort:skip - HyperlinkedIdentityField, HyperlinkedRelatedField, ManyRelatedField, + HyperlinkedIdentityField, HyperlinkedRelatedField, QueryParameterHyperlinkedIdentityField, ManyRelatedField, PrimaryKeyRelatedField, RelatedField, SlugRelatedField, StringRelatedField, )