django-rest-framework中的嵌套detail_route

时间:2015-05-20 13:40:55

标签: python django django-rest-framework

考虑简单的观点:

class SomeView(viewsets.GenericViewSet,
               viewsets.mixins.ListModelMixin,
               viewsets.mixins.RetrieveModelMixin):
    ...

    @decorators.detail_route(methods=ENDPOINT_PROPERTY_METHODS)
    def some_property(self, request, *args, **kwargs):
      view = SomeOtherView
      return view.as_view(CRUD_ACTIONS)(request, *args, **kwargs)

我调用SomeOtherView能够拥有像/someresource/:id/myproperty这样的端点属性,因此该属性将接收请求并可以执行所有CRUD操作。

但是,我希望SomeOtherView将声明的detail_route置于/someresource/:id/myproperty/nestedproperty之内。 由于我动态调用SomeOtherView,因此无法注册网址,因此无法调用嵌套属性。

如何解决此类情况以拥有嵌套属性?

1 个答案:

答案 0 :(得分:3)

目前在django-rest-framework中自动创建嵌套路由没有本地方法,但有一些方法可以实现您的目标:

  1. 使用drf-extentions,您正在搜索的是嵌套路由器:https://chibisov.github.io/drf-extensions/docs/#nested-routes
  2. 使用默认路由器手动创建路径,此处需要手动过滤您的查询集
  3. 虽然你没有详细解释你想要用这种api结构实现什么,但我不建议继续这条路径,因为意图不是那样用的。