Вызовите метод ViewSet из другого представления - PullRequest
0 голосов
/ 03 июля 2018

У меня есть мобильное приложение с API-интерфейсом REST Django, и у меня есть много ModelViewSet, которые я вызываю для получения данных. У меня проблема с производительностью, потому что мне нужно вызывать много маршрутов после входа в систему пользователя, и я хотел бы сохранить логику REST, но также возвращает после входа в систему все содержимое наборов в ответе на вход в систему (сохраняя их фильтры).

Можно ли вызвать список ModelViewset () из другого представления (viewset или APIView)?

Единственный ответ, который я нашел на SO, был сделать что-то вроде этого

class ContentGenerator(APIView):

    def get(self, request, format=None):
         data = MyModelViewSet.as_view({'get': 'list'})(request).data

         return Response({'data': data})

Но это не поддерживается

Exception Value: The `request` argument must be an instance of `django.http.HttpRequest`, not `rest_framework.request.Request`

Есть ли другое решение?

1 Ответ

0 голосов
/ 03 июля 2018

После некоторых исследований может возникнуть побочный эффект от повторного использования запроса в других представлениях, поэтому он официально не поддерживается DRF. Это глупо, но если вы знаете, что делаете, это решение.

data = MyModelViewSet.as_view({'get': 'list'})(request._request).data
...