Django Rest框架Vi的附加视图

2024-10-03 02:47:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个模型的简单DRF视图集,位于/gen_req/

class GenerationRequestViewSet(viewsets.ModelViewSet):
    queryset = GenerationRequest.objects
    serializer_class = GenerationRequestSerializer

它有默认的POST/GET/etc处理程序。但是,我还想为GET添加另一个用于不同url模式(/gen_req/created_list

class GenerationRequestViewSet(viewsets.ModelViewSet):
    queryset = GenerationRequest.objects
    serializer_class = GenerationRequestSerializer

    @action(methods=['get'])
    def special_get_handler(self, request):
        queryset = GenerationRequest.filter(...) # Some extra filtering here
        serializer = self.get_serializer(queryset, many=True)
        return Response(serializer.data)

有没有办法在视图集中创建这样的视图,或者应该创建另一个APIView?你知道吗


Tags: self视图getobjectsreqclassgenqueryset
2条回答

可以这样做,但需要相应地命名方法。因此,使用代码,您可以通过请求/gen_req/special_get_handler来获取此方法。你知道吗

当然,应该在网址.py. Smth类似:

api_router = DefaultRouter()
api_router.register("gen_req", GenerationRequestViewSet)

您可以这样做,只需将这样的记录添加到urls.py文件中。你知道吗

path('/gen_req/created_list',
     GenerationRequestViewSet.as_view({'get': 'special_get_handler'}),),

相关问题 更多 >