DjangoRestMultipleModels
DjangoRestMultipleModels copied to clipboard
AssertionError: DataViewSet.get_queryset() returned None
DataViewSet.get_queryset() returned None when using ObjectMultipleModelAPIViewSet. basename given, even router converted to path function. But still same issue
Getting this issue in django 3.0.14 and django-rest-multiple-models==2.1.3. Can I get some help here?
It's hard to diagnose the issue without a little more information. If you could provide either the full traceback and/or a code sample that reproduces the issue, I might be able to help. Also, knowing what rest_framework version you're using would be helpful.
djangorestframework==3.12.4
So I have few models & instead of giving single json responses to frontend which will only make get queries to django backend I want to club all models data into single response as a http://127.0.0.1:8000/api/allapisdata/
and send this when frontend is on homepage. But when I override my custom AllApiDataViewSet with ObjectMultipleModelAPIViewSet it gives this traceback. I saw the code and in DjangoRestMultipleModels/drf_multiple_model/viewsets.py we have get_queryset() method which returns None.
So shall I override this method? If yes then how? I will be obliged if you could help.
urls.py
from rest_framework import routers
router = routers.DefaultRouter()
router.register(r"allapisdata", AllApiDataViewSet, basename="allapisdata")
Error Trace
Environment:
Request Method: GET
Request URL: http://127.0.0.1:8000/api/allapisdata/
Django Version: 3.0.14
Python Version: 3.8.10
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'corsheaders',
'ckeditor',
'drf_multiple_model',
'home']
Installed Middleware:
['corsheaders.middleware.CorsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware']
Traceback (most recent call last):
File "/media/main/Data/Projects/AIT_ECELL/aitecell/env/lib/python3.8/site-packages/django/core/handlers/exception.py", line 34, in inner
response = get_response(request)
File "/media/main/Data/Projects/AIT_ECELL/aitecell/env/lib/python3.8/site-packages/django/core/handlers/base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/media/main/Data/Projects/AIT_ECELL/aitecell/env/lib/python3.8/site-packages/django/core/handlers/base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/media/main/Data/Projects/AIT_ECELL/aitecell/env/lib/python3.8/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
return view_func(*args, **kwargs)
File "/media/main/Data/Projects/AIT_ECELL/aitecell/env/lib/python3.8/site-packages/rest_framework/viewsets.py", line 125, in view
return self.dispatch(request, *args, **kwargs)
File "/media/main/Data/Projects/AIT_ECELL/aitecell/env/lib/python3.8/site-packages/rest_framework/views.py", line 509, in dispatch
response = self.handle_exception(exc)
File "/media/main/Data/Projects/AIT_ECELL/aitecell/env/lib/python3.8/site-packages/rest_framework/views.py", line 469, in handle_exception
self.raise_uncaught_exception(exc)
File "/media/main/Data/Projects/AIT_ECELL/aitecell/env/lib/python3.8/site-packages/rest_framework/views.py", line 480, in raise_uncaught_exception
raise exc
File "/media/main/Data/Projects/AIT_ECELL/aitecell/env/lib/python3.8/site-packages/rest_framework/views.py", line 497, in dispatch
self.initial(request, *args, **kwargs)
File "/media/main/Data/Projects/AIT_ECELL/aitecell/env/lib/python3.8/site-packages/rest_framework/views.py", line 415, in initial
self.check_permissions(request)
File "/media/main/Data/Projects/AIT_ECELL/aitecell/env/lib/python3.8/site-packages/rest_framework/views.py", line 332, in check_permissions
if not permission.has_permission(request, self):
File "/media/main/Data/Projects/AIT_ECELL/aitecell/env/lib/python3.8/site-packages/rest_framework/permissions.py", line 229, in has_permission
queryset = self._queryset(view)
File "/media/main/Data/Projects/AIT_ECELL/aitecell/env/lib/python3.8/site-packages/rest_framework/permissions.py", line 213, in _queryset
assert queryset is not None, (
Exception Type: AssertionError at /api/allapisdata/
Exception Value: AllApiDataViewSet.get_queryset() returned None
Hi, I know its too late, but I have got something. you need to change the source file "viewsets.py" of Package. like
from rest_framework.viewsets import GenericViewSet
from drf_multiple_model.mixins import FlatMultipleModelMixin, ObjectMultipleModelMixin
class FlatMultipleModelAPIViewSet(FlatMultipleModelMixin, GenericViewSet): def get_queryset(self): return self
class ObjectMultipleModelAPIViewSet(ObjectMultipleModelMixin, GenericViewSet): def get_queryset(self): return self
and then. in your view.py:
add at least one of models. like: class YourView(FlatMultipleModelViewSet): querylist = [ {...} ] model = YourModel
give it a try.