DjangoRest - 可以在ModelViewSet中定义多个create(self,request)

时间:2017-02-23 05:44:05

标签: django django-rest-framework django-rest-viewsets

我有一个项目需要执行相同模型的不同创建过程。

我们可以通过创建多个ModelViewSet来实现这一目标。

class AnimalViewSet(viewsets.ModelViewSet):
    queryset = Animal.objects.all()
    serializer_class = AnimalSerializer

    def create(self, request):
         # just simply create the object...
         pass

端点为POST /api/animal/

class CalvingViewSet(viewsets.ModelViewSet):
    # This is called when an animal has successfully delivered its new born..

    queryset = Animal.objects.all()
    serializer_class = AnimalSerializer

    def create(self, request):
         # define parent animals pregnancy as success
         # and more..
         # finally create the object..
         pass

端点为POST /api/calving/

但我不愿意这样做。

现在可以在一个create(self, request)

中定义多个ModelViewSet
class AnimalViewSet(viewsets.ModelViewSet):
    queryset = Animal.objects.all()
    serializer_class = AnimalSerializer

    def create(self, request):
         # just simply create the object...
         pass

    def calving(self, request):
         # create the object..
         # define parent animals pregnancy as success
         # and more..
         pass

通过这种方式,我可以避免为同一个模型创建另一个模型视图。

create(self, request):的端点为POST /api/animal/

问题是如果不使用calving(self, request):

,我不知道@list_route(methods=['post])的端点是什么

@list_route(methods=['post'])可能有所帮助,但我想确保有另一种正确的方法来做到这一点。

0 个答案:

没有答案