2016-12-05 36 views
0

Django的REST框架嵌套的路線我想實現這樣的路線:沒有PK

/items - list of all items. 
/items/types - list of all item types 

我看着DRF-巢-擊潰,但嵌套網址期待{} PK要傳遞。有沒有什麼好的方法來實現我想要的?

回答

1

如果您不需要pk,那麼你的路徑應該是/types/items/types

您可能需要看一看這太問題關於REST嵌套資源:

What are best practices for REST nested resources

+0

現在它以這種方式實現。但是我認爲讓項目的類型子地址更合乎邏輯,因爲它們是項目的類型而沒有別的。 – mcferden

+1

如果它們是項目的類型(項目的子資源),那意味着您需要添加'pk'。如果我明白你所需要的是'/ types'而不是'/ items//types' – ettanany

0

隨着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方式。

Docs on custom ViewSet actions

相關問題