Django Rest-自定义序列化程序/查询-断言queryset不是None

Django Rest-自定义序列化程序/查询-断言queryset不是None,django,django-rest-framework,Django,Django Rest Framework,我试图在viewset查询集中手动创建自定义序列化程序和基于词典的查询,但是我收到了错误,这无法帮助我确定视图或序列化程序的哪个部分失败 File "/itapp/itapp/api/urls.py", line 12, in <module> router.register(r'ss_monitoring_data', views.SiteSupernetMontioringDataROView) File "/usr/local/lib/python3.6/site-

我试图在viewset查询集中手动创建自定义序列化程序和基于词典的查询,但是我收到了错误,这无法帮助我确定视图或序列化程序的哪个部分失败

File "/itapp/itapp/api/urls.py", line 12, in <module>
    router.register(r'ss_monitoring_data', views.SiteSupernetMontioringDataROView)
  File "/usr/local/lib/python3.6/site-packages/rest_framework/routers.py", line 102, in register
    basename = self.get_default_basename(viewset)
  File "/usr/local/lib/python3.6/site-packages/rest_framework/routers.py", line 185, in get_default_basename
    assert queryset is not None, '`basename` argument not specified, and could ' \
AssertionError: `basename` argument not specified, and could not automatically determine the name from the viewset, as it does not have a `.queryset` attribute.
这是一种观点:

class SiteSupernetMontioringDataROView(generics.ListAPIView):
    permission_classes = (IsAdminUser,) 
    serializer_class = SiteSupernetMonitoringDataROSSerializer
    paginate_by = 20

    def get_queryset(self):
        site_supernet_data = SiteSupernet.objects.filter(site__is_live=True, subnet_type__subnet_type__icontains='site aggregate').values()
        dcs_data = DeviceCircuitSubnets.objects.filter(
                                                    device__site__is_live=True, 
                                                    circuit__decommissioned=False
                                                ) \
                                                .select_related(
                                                    'device'
                                                    'device__site',
                                                    'subnet'
                                                    'circuit'
                                                ).values(
                                                    'id',
                                                    'subnet_id',
                                                    'circuit_id',
                                                    'device_id',
                                                    'device__site_id',
                                                    'circuit__name',
                                                    'subnet__subnet',
                                                    'subnet__mask'
                                                )

        for supernet in site_supernet_data:
            if 'circuits' not in supernet.keys():
                supernet['circuits']= []
            for dcs in dcs_data:
                    if dcs['device__site_id'] == supernet['site_id']:
                        supernet['circuits'].append(dcs)

        return site_supernet_data

您正试图在路由器中注册
SiteSupernetMontioringDataROView
。这不是正确的方法
ListAPIView
不能与
路由器一起使用
。您必须使用
as_view
方法将其传递给url模式

urlpatterns = [
    ...
    url('<YOUR_URL>', SiteSupernetMontioringDataROView.as_view())
]
urlpatterns=[
...
url(“”,SiteSuperNetMontioringDataProview.as_view())
]

阅读有关为适当版本的django定义
URL
的详细信息。

您正试图在路由器中注册
SiteSupernetMontioringDataROView
。这不是正确的方法
ListAPIView
不能与
路由器一起使用
。您必须使用
as_view
方法将其传递给url模式

urlpatterns = [
    ...
    url('<YOUR_URL>', SiteSupernetMontioringDataROView.as_view())
]
urlpatterns=[
...
url(“”,SiteSuperNetMontioringDataProview.as_view())
]
请阅读有关为您的django适当版本定义
URL
的更多信息