umutbozkurt/django-rest-framework-mongoengine

TypeError: 'list' object is not an iterator

Opened this issue · 1 comments

Using ModelViewSet or ReadOnlyModelViewSet call pagination.py that expect list rather then iterator. I am guessing this library should implement custom Pagination to properly process lists

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../../venv/py36_django/lib/python3.6/site-packages/django/test/client.py:536: in get
    **extra)
../../venv/py36_django/lib/python3.6/site-packages/django/test/client.py:340: in get
    return self.generic('GET', path, secure=secure, **r)
../../venv/py36_django/lib/python3.6/site-packages/django/test/client.py:416: in generic
    return self.request(**r)
../../venv/py36_django/lib/python3.6/site-packages/django/test/client.py:501: in request
    six.reraise(*exc_info)
../../venv/py36_django/lib/python3.6/site-packages/django/utils/six.py:686: in reraise
    raise value
../../venv/py36_django/lib/python3.6/site-packages/django/core/handlers/exception.py:41: in inner
    response = get_response(request)
../../venv/py36_django/lib/python3.6/site-packages/django/core/handlers/base.py:187: in _get_response
    response = self.process_exception_by_middleware(e, request)
../../venv/py36_django/lib/python3.6/site-packages/django/core/handlers/base.py:185: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
../../venv/py36_django/lib/python3.6/site-packages/django/views/decorators/csrf.py:58: in wrapped_view
    return view_func(*args, **kwargs)
../../venv/py36_django/lib/python3.6/site-packages/rest_framework/viewsets.py:90: in view
    return self.dispatch(request, *args, **kwargs)
../../venv/py36_django/lib/python3.6/site-packages/rest_framework/views.py:489: in dispatch
    response = self.handle_exception(exc)
../../venv/py36_django/lib/python3.6/site-packages/rest_framework/views.py:449: in handle_exception
    self.raise_uncaught_exception(exc)
../../venv/py36_django/lib/python3.6/site-packages/rest_framework/views.py:486: in dispatch
    response = handler(request, *args, **kwargs)
../../venv/py36_django/lib/python3.6/site-packages/rest_framework/mixins.py:42: in list
    page = self.paginate_queryset(queryset)
../../venv/py36_django/lib/python3.6/site-packages/rest_framework/generics.py:173: in paginate_queryset
    return self.paginator.paginate_queryset(queryset, self.request, view=self)
../../venv/py36_django/lib/python3.6/site-packages/rest_framework/pagination.py:226: in paginate_queryset
    return list(self.page)
../../venv/py36_django/lib/python3.6/_collections_abc.py:883: in __iter__
    v = self[i]
../../venv/py36_django/lib/python3.6/site-packages/django/core/paginator.py:145: in __getitem__
    self.object_list = list(self.object_list)
../../venv/py36_django/lib/python3.6/site-packages/mongoengine/queryset/queryset.py:97: in _iter_results
    self._populate_cache()
../../venv/py36_django/lib/python3.6/site-packages/mongoengine/queryset/queryset.py:116: in _populate_cache
    self._result_cache.append(next(self))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = .. queryset mid-iteration ..

    def __next__(self):
        """Wrap the result in a :class:`~mongoengine.Document` object.
            """
        if self._limit == 0 or self._none:
            raise StopIteration
    
>       raw_doc = next(self._cursor)
E       TypeError: 'list' object is not an iterator

../../venv/py36_django/lib/python3.6/site-packages/mongoengine/queryset/base.py:1466: TypeError

@ola-t Hi, Ola! Could you provide the source code of your ModelViewSet, DocumentSerializer and Document with all the imports? I want to reproduce the issue.