Вернуть NoneType в запросе Django REST framework

Проблема :

Я получаю такую ​​ошибку:

Выслеживать:

Файл "/usr/local/lib/python2.7/dist-packages/django/core/handlers/exception.py" во внутреннем 41. response = get_response (запрос)

Файл "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" в _get_response 187. response = self.process_exception_by_middleware (e, request)

Файл "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" в _get_response 185. response = wrapped_callback (запрос, * callback_args, ** callback_kwargs)

Файл "/usr/local/lib/python2.7/dist-packages/django/views/decorators/csrf.py" в wrapped_view 58. return view_func (* args, ** kwargs)

Файл "/usr/local/lib/python2.7/dist-packages/rest_framework/viewsets.py" в представлении 87. return self.dispatch (request, * args, ** kwargs)

Файл "/usr/local/lib/python2.7/dist-packages/rest_framework/views.py" в отправке 474. response = self.handle_exception (exc)

Файл "/usr/local/lib/python2.7/dist-packages/rest_framework/views.py" в handle_exception 434. self.raise_uncaught_exception (exc)

Файл "/usr/local/lib/python2.7/dist-packages/rest_framework/views.py" в отправке 471. response = handler (request, * args, ** kwargs)

Файл "/usr/local/lib/python2.7/dist-packages/rest_framework/mixins.py" в списке 42. page = self.paginate_queryset (queryset)

Файл "/usr/local/lib/python2.7/dist-packages/rest_framework/generics.py" в paginate_queryset 172. return self.paginator.paginate_queryset (queryset, self.request, view = self)

Файл "/usr/local/lib/python2.7/dist-packages/rest_framework/pagination.py" в paginate_queryset 311. self.count = _get_count (queryset)

Файл "/usr/local/lib/python2.7/dist-packages/rest_framework/pagination.py" в _get_count 54. return len (queryset)

Тип исключения: TypeError в / api / userprofiles / Значение исключения: объект типа NoneType не имеет len ()

Что я пытаюсь сделать:

Я просто хочу, чтобы люди получали свой собственный профиль при подключении к api, поэтому я подумал, что вместо применения UserProfile.objects.all было бы лучше, если бы я использовал UserProfile.objects.get(user=request.user).

Но, как вы хорошо видите, он не работает, возможно, потому что pagination имеет некоторую проблему, потому что он пытается получить len(), но объект, который он получает, NoneType, хотя я распечатал набор запросов сразу после его получения, чтобы чтобы определить, действительно ли это NoneType, но это не так.

Вот мой UserProfileViewSet:

class UserProfileViewSet(viewsets.ModelViewSet):
    """
    This viewset automatically provides `list`, `create`, `retrieve`,
    `update` and `destroy` actions.
    """
    # queryset = UserProfile.objects.all(user=request.user)
    serializer_class = UserProfileSerializer
    permission_classes = (permissions.IsAuthenticatedOrReadOnly,
                          IsOwnerOrReadOnly,)
    pagination_class = LimitTenPagination

    def get_queryset(self):
        try:
            queryset = self.request.user.profile.all() # UserProfile.objects.get(user=self.request.user)
            print queryset
        except:
            queryset = None
        return queryset   # UserProfile.objects.get(user=self.request.user)

    @detail_route(renderer_classes=[renderers.JSONRenderer])
    def perform_create(self, serializer):
        serializer.save(user=self.request.user)

person hemo    schedule 21.01.2018    source источник


Ответы (1)


Ответ (получил почти мгновенно)

Что ж, когда я использовал UserProfile.objects.get(user=self.request.user), я получал объект, вместо этого мне нужно было получить набор запросов.

Поэтому изменил набор запросов на queryset = UserProfile.objects.filter(user=self.request.user)

person hemo    schedule 21.01.2018