diff --git a/rest_framework/routers.py b/rest_framework/routers.py index 930011d39..d3fb3f88e 100644 --- a/rest_framework/routers.py +++ b/rest_framework/routers.py @@ -184,14 +184,17 @@ class SimpleRouter(BaseRouter): bound_methods[method] = action return bound_methods - def get_lookup_regex(self, viewset): + def get_lookup_regex(self, viewset, lookup_prefix=''): """ Given a viewset, return the portion of URL regex that is used to match against a single instance. """ - base_regex = '(?P<{lookup_field}>[^/]+)' + if lookup_prefix: + lookup_prefix += '_' + + base_regex = '(?P<{lookup_prefix}{lookup_field}>[^/]+)' lookup_field = getattr(viewset, 'lookup_field', 'pk') - return base_regex.format(lookup_field=lookup_field) + return base_regex.format(lookup_field=lookup_field, lookup_prefix=lookup_prefix) def get_urls(self): """