From 1c7ca24c02595e309cd7f7f36a66d0215d1447ae Mon Sep 17 00:00:00 2001 From: Tymur Maryokhin Date: Fri, 20 Mar 2015 23:03:52 +0100 Subject: [PATCH] Allow dynamic routes to set 'serialzer_class' kwarg. --- rest_framework/routers.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/rest_framework/routers.py b/rest_framework/routers.py index 4df852bfb..1887d33c3 100644 --- a/rest_framework/routers.py +++ b/rest_framework/routers.py @@ -171,7 +171,7 @@ class SimpleRouter(BaseRouter): method_kwargs = getattr(viewset, methodname).kwargs initkwargs = route.initkwargs.copy() initkwargs.update(method_kwargs) - url_path = initkwargs.pop("url_path", None) or methodname + url_path = initkwargs.pop('url_path', None) or methodname ret.append(Route( url=replace_methodname(route.url, url_path), mapping=dict((httpmethod, methodname) for httpmethod in httpmethods), @@ -254,6 +254,11 @@ class SimpleRouter(BaseRouter): trailing_slash=self.trailing_slash ) view = viewset.as_view(mapping, **route.initkwargs) + + # Allow dynamic routes to set `serializer_class` kwarg + if isinstance(route, (DynamicDetailRoute, DynamicListRoute)): + view.serializer_class = route.initkwargs.pop('serializer_class', None) + name = route.name.format(basename=basename) ret.append(url(regex, view, name=name))