在ViewSets中使用get_queryset(),无法访问详细信息视图。错误:无法使用None作为查询值

时间:2018-01-17 16:12:12

标签: django django-rest-framework

当我向127.0.0.1:8000/tasks/10/发出DELETE请求时,出现无法使用None作为查询值的错误。

views.py

class TaskViewSet(viewsets.ModelViewSet):
    def get_queryset(self):
        p1 = self.request.query_params.get('parameter')    
        queryset = Task.objects.nearby(p1)    
        return queryset

    serializer_class = TaskSerializer

urls.py

task_list = views.TaskViewSet.as_view({
    'get': 'list',
    'post': 'create'
})
task_detail = views.TaskViewSet.as_view({
    'get': 'retrieve',
    'put': 'update',
    'patch': 'partial_update',
    'delete': 'destroy'
})

# The API URLs are now determined automatically by the router.
urlpatterns = [
    url(r'^', include(router.urls)),
    url(r'^tasks/$', task_list, name='task-list'),
    url(r'^tasks/(?P<pk>[0-9]+)/$', task_detail, name='task-detail'),
]

一切正常用于列表,例如对127.0.0.1:8000/tasks/的所有请求。但是,请求都不适用于详细视图。我假设它与get_queryset()有关。

1 个答案:

答案 0 :(得分:1)

您的网址会将该值捕获为pk参数,但您尝试在parameter方法中获取get_queryset