gpt4 book ai didi

python - Django 分页泛型 LISTCREATEAPIview 中的条件查询集

转载 作者:太空宇宙 更新时间:2023-11-03 10:58:45 25 4
gpt4 key购买 nike

我有一个包含一些 query_params 的 URL,并且我在这个 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

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

如果两个条件 block 都失败,则返回 query_set 并执行此 query_set

queryset = Workout.objects.all() My Workout tables contain millions of entries and I don't want to return the whole table. That would be catastrophic.

所以我添加了另一个这样的条件 block

 elif query_param is None:
query_set = None

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

最佳答案

您可以使用QuerySet.objects.None() 返回一个EmptyQuerySet 当任何异常或条件 block 失败时。

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

关于python - Django 分页泛型 LISTCREATEAPIview 中的条件查询集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36790024/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com