Как передать сконструированную полезную нагрузку в метод создания набора моделей

#python #django #django-rest-framework

Вопрос:

У меня есть ModelViewSet , из которых я переопределил create функцию, как показано ниже —

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

    def create(self, request, *args, *kwargs):
        req_data = json.loads(request.body)
        x = req_data.get('x')
        response = super().create(request, *args, **kwargs)
        book_id = response.data['id']
        do_foo(book_id, n=x)
        return response
 

Теперь в другой функции я пытаюсь вызвать эту ViewSet create функцию.

 @api_view(['POST',])
def bar(request, *args, **kwargs):
    req_data = request.data
    rf = RequestFactory()
    payload = {'name': "Book1", 'author': "Helen"}
    mock_req = rf.post('/book', json.dumps(payload), content_type='application/json')
    vs = BookViewSet()
    return vs.create(mock_req)
 

Это приводит меня к ошибке —

AttributeError: 'WSGIRequest' object has not attribute 'data' на этой линии — response = super().create(request, *args, **kwargs)