mirror of
https://github.com/encode/django-rest-framework.git
synced 2024-11-23 01:57:00 +03:00
Tweak behavior of hyperlinked fields that include an explicit format suffix.
This commit is contained in:
parent
92ae08207a
commit
bfea7f64ee
|
@ -66,7 +66,7 @@ This change will not affect user code, so long as it's following the recommended
|
||||||
* Bugfix: Ensure read-only fields don't have model validation applied.
|
* Bugfix: Ensure read-only fields don't have model validation applied.
|
||||||
* Bugfix: Fix hyperlinked fields in paginated results.
|
* Bugfix: Fix hyperlinked fields in paginated results.
|
||||||
|
|
||||||
## 2.1.9
|
### 2.1.9
|
||||||
|
|
||||||
**Date**: 11th Dec 2012
|
**Date**: 11th Dec 2012
|
||||||
|
|
||||||
|
|
|
@ -407,6 +407,7 @@ class HyperlinkedIdentityField(Field):
|
||||||
# TODO: Make view_name mandatory, and have the
|
# TODO: Make view_name mandatory, and have the
|
||||||
# HyperlinkedModelSerializer set it on-the-fly
|
# HyperlinkedModelSerializer set it on-the-fly
|
||||||
self.view_name = kwargs.pop('view_name', None)
|
self.view_name = kwargs.pop('view_name', None)
|
||||||
|
# Optionally the format of the target hyperlink may be specified
|
||||||
self.format = kwargs.pop('format', None)
|
self.format = kwargs.pop('format', None)
|
||||||
|
|
||||||
self.slug_field = kwargs.pop('slug_field', self.slug_field)
|
self.slug_field = kwargs.pop('slug_field', self.slug_field)
|
||||||
|
@ -418,9 +419,22 @@ class HyperlinkedIdentityField(Field):
|
||||||
|
|
||||||
def field_to_native(self, obj, field_name):
|
def field_to_native(self, obj, field_name):
|
||||||
request = self.context.get('request', None)
|
request = self.context.get('request', None)
|
||||||
format = self.format or self.context.get('format', None)
|
format = self.context.get('format', None)
|
||||||
view_name = self.view_name or self.parent.opts.view_name
|
view_name = self.view_name or self.parent.opts.view_name
|
||||||
kwargs = {self.pk_url_kwarg: obj.pk}
|
kwargs = {self.pk_url_kwarg: obj.pk}
|
||||||
|
|
||||||
|
# By default use whatever format is given for the current context
|
||||||
|
# unless the target is a different type to the source.
|
||||||
|
#
|
||||||
|
# Eg. Consider a HyperlinkedIdentityField pointing from a json
|
||||||
|
# representation to an html property of that representation...
|
||||||
|
#
|
||||||
|
# '/snippets/1/' should link to '/snippets/1/highlight/'
|
||||||
|
# ...but...
|
||||||
|
# '/snippets/1/.json' should link to '/snippets/1/highlight/.html'
|
||||||
|
if format and self.format and self.format != format:
|
||||||
|
format = self.format
|
||||||
|
|
||||||
try:
|
try:
|
||||||
return reverse(view_name, kwargs=kwargs, request=request, format=format)
|
return reverse(view_name, kwargs=kwargs, request=request, format=format)
|
||||||
except:
|
except:
|
||||||
|
|
Loading…
Reference in New Issue
Block a user