Как избежать дублирования объектов в пагинации django при использовании order_by('?')
Я использую viewset в rest framework. Я получаю одни и те же объекты на разных страницах. Как я могу избежать этого.
class Viewset(viewsets.ModelViewSet):
queryset = Model.objects.all().order_by('?')
serializer_class = MySerializer
pagination_class = StandardPagination
Я думаю, что вы можете загрузить уже найденные идентификаторы при вызове GET API.
import json
class Viewset(viewsets.ModelViewSet):
queryset = Model.objects.all()
serializer_class = MySerializer
pagination_class = StandardPagination
def get_queryset(self):
qs = super().get_queryset()
exclude_ids = self.request.GET.get('exclude_ids')
if exclude_ids :
ids = json.loads(exclude_ids)
return qs.exclude(id__in = ids)
return qs
Конечно, во фронтенде необходимо загрузить массив найденных идентификаторов. Например,
localhost:8080/...?exclude_ids=[1,3,10,5]