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.
================================================ =============
这是一个不好的设计吗?关于如何实现此目标的任何提示?