【发布时间】:2016-04-18 17:01:28
【问题描述】:
我正在我现有的 Web 服务(RESTful API)上实现 DRF 的分页。现在我从 DRF Pagination 的文档中了解到,分页自动应用于 ListCreateAPIView ,只需要在 settings.py 文件中添加一些行。
所以我根据文档进行了更改,对于我的 web 服务,我希望我的查询集是动态的。 以下是所做的更改:
urls.py
url(r'^users/(?P<pk>[0-9]+)/workouts/get/$',
ListCreateAPIView.as_view(WorkoutList.get_queryset(), 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):
workout_instance = WorkoutList()
workout_instance.get_queryset()
query_params = self.request.QUERY_PARAMS.dict()
if 'date' in query_params and 'exclude_app_install_time' in query_params:
query_set = Workout.objects.filter(created__contains=date).exclude(
app_install_time=query_params['exclude_app_install_time'])
else:
query_set = {}
return query_set
def list(self, request, *args, **kwargs):
workouts = self.get_queryset()
serializer = WorkoutSerializer(workouts, many=True)
return Response(serializer.data)
PS : 我已经 stackoverflowed(双关语)这个问题,但找不到正确的解决方案。
我还想在 DRF 中实现 OffsetLimitPagination。一个小的示例链接会很有帮助
【问题讨论】:
标签: python django pagination django-rest-framework