我有一个简单的DRF ViewSet模型,位于/gen_req/
class GenerationRequestViewSet(viewsets.ModelViewSet):
queryset = GenerationRequest.objects
serializer_class = GenerationRequestSerializer
它具有默认的POST / GET / etc。处理程序。但是,我想为不同的网址格式(/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)
是否可以在ViewSet中创建这样的视图,还是应该创建另一个APIView?
答案 0 :(得分:1)
您可以这样做,但是您需要相应地命名方法。因此,使用代码,您已经发布了,您可以通过请求/gen_req/special_get_handler
来获得此方法。
当然,它应该在url.py中注册。像这样:
api_router = DefaultRouter()
api_router.register("gen_req", GenerationRequestViewSet)
答案 1 :(得分:1)
您可以做到,只需将此类记录添加到您的urls.py
文件中即可。
path('/gen_req/created_list',
GenerationRequestViewSet.as_view({'get': 'special_get_handler'}),),