Django-rest-framework中的嵌套detail_route

8

考虑简单视图:

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`的,所以不能注册URL,因此无法调用嵌套属性。
我该如何解决这种情况以获得嵌套属性?
1个回答

4
目前在django-rest-framework中没有原生的自动创建嵌套路由的方法,但有一些方法可以实现您的目标:
  1. 使用drf-extensions,您要查找的是嵌套路由:https://chibisov.github.io/drf-extensions/docs/#nested-routes
  2. 使用默认路由手动创建路径,在这里需要手动过滤查询集
虽然您没有详细说明您想通过此api结构实现什么,但我不建议继续这条路,因为视图不应该像这样使用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接