我可以使用不同的URL模式过滤DRF中的listview吗?

时间:2018-03-26 14:38:59

标签: python django django-rest-framework

我目前/items/指向所有Item个对象的列表视图和详细视图。我使用ViewSets完成了此操作。

我是否可以让/items/category/显示该类别中的项目列表?

我是否可以让/items/category/subcategory/显示该子类别中的项目列表?

我想仅使用ViewSet和路由器执行上述操作。

1 个答案:

答案 0 :(得分:1)

您可以使用@list_route

向viewset添加此类额外功能
class ItemViewSet(viewsets.ModelViewSet):
    queryset = Item.objects.all()
    serializer_class = ItemSerializer

    @list_route()
    def category(self, request):
        category_items = Item.objects.filter(category_id=1) # for e.g.
        serializer = self.get_serializer(category_items, many=True)
        return Response(serializer.data)

    @list_route(url_path='category/subcategory')
    def category(self, request):
        category_items = Item.objects.filter(category_id=1, subcategory_id=2) # for e.g.
        serializer = self.get_serializer(category_items, many=True)
        return Response(serializer.data)

新功能将在followinbg网址/items/category//items/category/subcategory/上提供。