修改请求后从另一个视图调用视图(Rest-Framework)

时间:2019-10-16 14:53:52

标签: python django django-rest-framework django-views

Book_ViewSet:

我有一个ViewSet,负责处理产品上的所有CRUD操作。考虑使用Book API,我可以在其中基于 title author 创建一本书。

ISBN_View:

我有另一个接受ISBN号的视图,查找书籍,获取标题 author ,然后从模型创建书籍。

我想要什么: 解析ISBN数据并获取图书信息后,我想以Book数据为主体向Book_ViewSet创建一个新的POST请求。

我尝试查找实现此目的的最佳方法,但是人们建议修改当前请求并将其发送到不同的视图是一个坏习惯。

================================================ =============

class Book_ViewSet(viewsets.ModelViewSet):
    queryset = Book.objects.all()
    serializer_class = serializers.BookSerializer

    def create(self, request, *args, **kwargs):
        . . .
        return super().create(request, *args, **kwargs)

    def retrieve(self, request, *args, **kwargs):
        . . .
        return super().retrieve(request, *args, **kwargs)

    def destroy(self, request, *args, **kwargs):
        pass

    def update(self, request, *args, **kwargs):
       . . .
       return super().update(request, *args, **kwargs)


class ISBN_view(generics.RetrieveAPIView):

    def get(self, request, isbn=None, *args, **kwargs):

        isbn, validation_error = self.validated_isbn(isbn)
        if not isbn:
            return Response(validation_error)

       # Here I use ISBN to search up books, and grab data

       # Here I want to call Book_ViewSet to create the Book instance
       # with the data I grabbed from ISBN


        return Response("bleep bloop")


    def validated_advance_id(self, isbn):
        pass
        # isbn validation goes here.

================================================ =============

这是一个不好的设计吗?关于如何实现此目标的任何提示?

0 个答案:

没有答案