Condtional query_set в Djano Pagination generic LISTCREATEAPIview

У меня есть URL-адрес с несколькими query_params, и я применил разбиение на страницы на этот URL-адрес.

urls.py

url(r'^users/(?P<pk>[0-9]+)/workouts/get/$', WorkoutList.as_view(serializer_class=WorkoutSerializer), name='list'), 

views.py

 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 

Теперь я попробую, кроме блока вокруг даты, и если параметр даты не там ничего не делает и просто возвращает код состояния Http 4xx. Также, если никакие параметры не возвращаются с кодом состояния 4xx.

В случае отказа обоих блоков условий он возвращает query_set и выполняет этот запрос_set

queryset = Workout.objects.all () Мои таблицы тренировки содержат миллионы записей, и я не хочу возвращать всю таблицу. Это было бы катастрофой.

Я добавил еще один условный блок, подобный этому

  elif query_param is None: query_set = None 

Простыми словами, если какое-либо исключение или условный блок терпит неудачу, просто верните 4xx.

    Вы можете вернуть EmptyQuerySet используя QuerySet.objects.None() если какой-либо из исключения или условного блока не работает.

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