Вызов вида из другого представления после изменения запроса (Rest-Framework) - PullRequest
0 голосов
/ 16 октября 2019

Book_ViewSet:

У меня есть ViewSet, который отвечает за все операции CRUD над продуктом. Рассмотрим API книг, где я могу создать книгу на основе заголовка и автора .

ISBN_View:

У меня есть другой вид, который принимает номера ISBNищет книгу, получает заголовок и автора и создает книгу из модели.

Что я хочу: после анализа данных ISBN и получения информации о книге,Я хочу создать новый POST-запрос к Book_ViewSet с данными книги в качестве тела.

Я попытался найти лучший способ сделать это, но люди предложили изменить текущий запрос и отправить его в другое представление. плохая практика.

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

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.

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

Это плоходизайн? Любые советы о том, как я могу это сделать?

...