From 8d0dbc8092a754e1f0f7d80d93506072556f35a2 Mon Sep 17 00:00:00 2001 From: Raphaƫl Barrois Date: Fri, 13 Mar 2015 01:07:20 +0100 Subject: Fix lookup_url_kwarg handling in viewsets. The ``lookup_url_kwarg`` is intended to set the name of a field in the URL regexps when using custom ``lookup_field``, but the routers ignore it altogether. --- rest_framework/routers.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'rest_framework/routers.py') diff --git a/rest_framework/routers.py b/rest_framework/routers.py index b1e39ff7..4df852bf 100644 --- a/rest_framework/routers.py +++ b/rest_framework/routers.py @@ -218,14 +218,15 @@ class SimpleRouter(BaseRouter): https://github.com/alanjds/drf-nested-routers """ - base_regex = '(?P<{lookup_prefix}{lookup_field}>{lookup_value})' + base_regex = '(?P<{lookup_prefix}{lookup_url_kwarg}>{lookup_value})' # Use `pk` as default field, unset set. Default regex should not # consume `.json` style suffixes and should break at '/' boundaries. lookup_field = getattr(viewset, 'lookup_field', 'pk') + lookup_url_kwarg = getattr(viewset, 'lookup_url_kwarg', None) or lookup_field lookup_value = getattr(viewset, 'lookup_value_regex', '[^/.]+') return base_regex.format( lookup_prefix=lookup_prefix, - lookup_field=lookup_field, + lookup_url_kwarg=lookup_url_kwarg, lookup_value=lookup_value ) -- cgit v1.2.3