def register_nested(self, parent_prefix, prefix, viewset, base_name=None, parent_lookup_name=None, depth_level=1): """ Register a nested viewset wihtout worrying of instantiate a nested router for registry. """ kwargs = {'trailing_slash': bool(self.trailing_slash)} if parent_lookup_name is not None: kwargs.update(lookup=parent_lookup_name) # Section for the depth of the route and add more routes if depth_level > 1: routers = ifilter( lambda r: (r._depth_level == (depth_level - 1)) and r._nested_prefix == parent_prefix, self._nested_object_registry) try: parent_router = routers.next() except StopIteration: raise RuntimeError('parent registered resource not found') else: parent_router = self nested_router = NestedSimpleRouter(parent_router, parent_prefix, **kwargs) nested_router._nested_prefix = prefix nested_router._depth_level = depth_level nested_router.register(prefix, viewset, base_name) self._nested_object_registry.append(nested_router)