在Django REST通用列表视图中,我已覆盖get_query_set
方法并将paginate_by
设置为25。
我想在每个页面中随机化一组项目。但是,当我在get_query_set方法中随机化项目时,整个集合是随机的。
要清除:项目列表为A B C D E F G
,并假设paginate_by为2
对于第一页,它应该随机返回A B
,对于第2页,它应该随机返回C D
等。
有任何棘手的方法吗?
答案 0 :(得分:2)
我还没有对此进行测试,但您似乎需要在视图中覆盖 paginate_queryset 方法来随机化页面中的对象。所以它会像..
# or use whatever you were using to randomize the list
from random import shuffle
class MyView(ListAPIView):
def paginate_queryset(self, queryset):
page = super(MyView, self).paginate_queryset(queryset):
shuffle(page.object_list)
return page
有关paginate_queryset如何工作的更多信息,请参阅ListAPIView的源代码:https://github.com/tomchristie/django-rest-framework/blob/master/rest_framework/generics.py