Python Djano分页通用LISTCREATEAPIview中的条件查询_集

Python Djano分页通用LISTCREATEAPIview中的条件查询_集,python,pagination,django-rest-framework,django-class-based-views,Python,Pagination,Django Rest Framework,Django Class Based Views,我有一个URL,其中有一些查询参数,我已经对这个URL应用了分页 url.py url(r'^users/(?P<pk>[0-9]+)/workouts/get/$', WorkoutList.as_view(serializer_class=WorkoutSerializer), name='list'), class WorkoutList(generics.ListCreateAPIView): queryset = Workout.objects.a

我有一个URL,其中有一些查询参数,我已经对这个URL应用了分页

url.py

url(r'^users/(?P<pk>[0-9]+)/workouts/get/$',
        WorkoutList.as_view(serializer_class=WorkoutSerializer), name='list'),
class WorkoutList(generics.ListCreateAPIView):
    queryset = Workout.objects.all()
    serializer_class = WorkoutSerializer
    permission_classes = (UserPermissions,)

    def get_queryset(self):
        query_set = super(WorkoutList, self).get_queryset()
        query_params = self.request.QUERY_PARAMS.dict()
        try:
            date = string_to_date_convertor(query_params['date'])
        except KeyError:
            print 'Exception'
            return Response(status=status.HTTP_406_NOT_ACCEPTABLE)

        if 'date' in query_params:
            query_set = Workout.objects.filter(created__contains=date, user_id = self.kwargs['pk'])

        elif 'date' in query_params and 'exclude_app_install_time' in query_params:
            query_set = Workout.objects.filter(created__contains=date, time_reg = query_params['exclude_app_install_time'])    


        return query_set
现在,我已经尝试除了块周围的日期,如果日期参数不存在,什么也不做,只返回4xx Http状态码。此外,如果没有参数,只需返回4xx状态代码即可

如果两个条件块都失败,它将返回查询集并执行此查询集

queryset=Workout.objects.all() 我的训练表包含数百万个条目,我不想返回整张表。那将是灾难性的

所以我添加了另一个条件块,如下所示

 elif query_param is None:
       query_set = None

简单地说,如果任何异常或条件块失败,则只返回4xx。

当任何异常或条件块失败时,您可以使用
返回
空查询集

# return empty queryset
queryset = Workout.objects.none()