没有PK
问题描述:
Django的REST框架嵌套的路线我想实现这样的路线:没有PK
/items - list of all items.
/items/types - list of all item types
我看着DRF-巢-击溃,但嵌套网址期待{} PK要传递。有没有什么好的方法来实现我想要的?
答
如果您不需要pk
,那么你的路径应该是/types
不/items/types
您可能需要看一看这太问题关于REST嵌套资源:
答
随着ID /items/1/types
意味着像“显示属于ID为1的项目的所有类型”。鉴于/items/types
没有意义,因为资源类型不能属于所有项目资源。
但是,您可以使用@list_route
修饰器(例如,修饰器)将其作为ViewSet的自定义操作来实现它。
class MyViewSet(viewsets.ModelViewSet):
...
@list_route()
def types(self, request):
return Response(some_way_to_list_types())
...
虽然它可能不是一种RESTful方式。
现在它以这种方式实现。但是我认为让项目的类型子地址更合乎逻辑,因为它们是项目的类型而没有别的。 – mcferden
如果它们是项目的类型(项目的子资源),那意味着您需要添加'pk'。如果我明白你所需要的是'/ types'而不是'/ items//types' –
ettanany