mirror of
https://github.com/encode/django-rest-framework.git
synced 2024-11-26 11:33:59 +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: Fix hyperlinked fields in paginated results.
|
||||
|
||||
## 2.1.9
|
||||
### 2.1.9
|
||||
|
||||
**Date**: 11th Dec 2012
|
||||
|
||||
|
|
|
@ -407,6 +407,7 @@ class HyperlinkedIdentityField(Field):
|
|||
# TODO: Make view_name mandatory, and have the
|
||||
# HyperlinkedModelSerializer set it on-the-fly
|
||||
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.slug_field = kwargs.pop('slug_field', self.slug_field)
|
||||
|
@ -418,9 +419,22 @@ class HyperlinkedIdentityField(Field):
|
|||
|
||||
def field_to_native(self, obj, field_name):
|
||||
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
|
||||
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:
|
||||
return reverse(view_name, kwargs=kwargs, request=request, format=format)
|
||||
except:
|
||||
|
|
Loading…
Reference in New Issue
Block a user