aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Christie2012-11-06 17:11:52 +0000
committerTom Christie2012-11-06 17:11:52 +0000
commit6d3bb67aa654d5f4c555746655a312000422d474 (patch)
tree2bf4bcdbb8f91bbdc685107e0629a76877cafc4f
parentcedb3860f4339db63dea61ac5a9b0bc08c673ea8 (diff)
downloaddjango-rest-framework-6d3bb67aa654d5f4c555746655a312000422d474.tar.bz2
Add pk_url_kwarg to hyperlinked fields
-rw-r--r--docs/api-guide/fields.md2
-rw-r--r--rest_framework/fields.py2
2 files changed, 4 insertions, 0 deletions
diff --git a/docs/api-guide/fields.md b/docs/api-guide/fields.md
index 2a8949a1..0485b158 100644
--- a/docs/api-guide/fields.md
+++ b/docs/api-guide/fields.md
@@ -268,6 +268,7 @@ By default, `HyperlinkedRelatedField` is read-write, although you can change thi
* `format` - If using format suffixes, hyperlinked fields will use the same format suffix for the target unless overridden by using the `format` argument.
* `queryset` - By default `ModelSerializer` classes will use the default queryset for the relationship. `Serializer` classes must either set a queryset explicitly, or set `read_only=True`.
* `slug_field` - The field on the target that should be used for the lookup. Default is `'slug'`.
+* `pk_url_kwarg` - The named url parameter for the pk field lookup. Default is `pk`.
* `slug_url_kwarg` - The named url parameter for the slug field lookup. Default is to use the same value as given for `slug_field`.
## HyperLinkedIdentityField
@@ -281,6 +282,7 @@ This field is always read-only.
* `view_name` - The view name that should be used as the target of the relationship. **required**.
* `format` - If using format suffixes, hyperlinked fields will use the same format suffix for the target unless overridden by using the `format` argument.
* `slug_field` - The field on the target that should be used for the lookup. Default is `'slug'`.
+* `pk_url_kwarg` - The named url parameter for the pk field lookup. Default is `pk`.
* `slug_url_kwarg` - The named url parameter for the slug field lookup. Default is to use the same value as given for `slug_field`.
[cite]: http://www.python.org/dev/peps/pep-0020/
diff --git a/rest_framework/fields.py b/rest_framework/fields.py
index 1b1f57db..651793e2 100644
--- a/rest_framework/fields.py
+++ b/rest_framework/fields.py
@@ -506,6 +506,7 @@ class HyperlinkedRelatedField(RelatedField):
self.slug_field = kwargs.pop('slug_field', self.slug_field)
default_slug_kwarg = self.slug_url_kwarg or self.slug_field
+ self.pk_url_kwarg = kwargs.pop('pk_url_kwarg', self.pk_url_kwarg)
self.slug_url_kwarg = kwargs.pop('slug_url_kwarg', default_slug_kwarg)
self.format = kwargs.pop('format', None)
@@ -611,6 +612,7 @@ class HyperlinkedIdentityField(Field):
self.slug_field = kwargs.pop('slug_field', self.slug_field)
default_slug_kwarg = self.slug_url_kwarg or self.slug_field
+ self.pk_url_kwarg = kwargs.pop('pk_url_kwarg', self.pk_url_kwarg)
self.slug_url_kwarg = kwargs.pop('slug_url_kwarg', default_slug_kwarg)
super(HyperlinkedIdentityField, self).__init__(*args, **kwargs)