Allow dynamic routes to set 'serialzer_class' kwarg.

This commit is contained in:
Tymur Maryokhin 2015-03-20 23:03:52 +01:00
parent 22569e8202
commit 1c7ca24c02

View File

@ -171,7 +171,7 @@ class SimpleRouter(BaseRouter):
method_kwargs = getattr(viewset, methodname).kwargs method_kwargs = getattr(viewset, methodname).kwargs
initkwargs = route.initkwargs.copy() initkwargs = route.initkwargs.copy()
initkwargs.update(method_kwargs) 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( ret.append(Route(
url=replace_methodname(route.url, url_path), url=replace_methodname(route.url, url_path),
mapping=dict((httpmethod, methodname) for httpmethod in httpmethods), mapping=dict((httpmethod, methodname) for httpmethod in httpmethods),
@ -254,6 +254,11 @@ class SimpleRouter(BaseRouter):
trailing_slash=self.trailing_slash trailing_slash=self.trailing_slash
) )
view = viewset.as_view(mapping, **route.initkwargs) 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) name = route.name.format(basename=basename)
ret.append(url(regex, view, name=name)) ret.append(url(regex, view, name=name))