Я бы предложил вызывать отфильтрованные данные из БД, так как они разбиты на страницы, вы можете вызывать API с помощью логики пропуска и ограничения для анализа следующих или уточняющих данных.
SELECT * FROM TableName ORDER BY id OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY;
Например, при запускехотите сначала 10 ROWS, затем из вашего приложения передайте параметр skip = 0 & limit = 10
SELECT * FROM TableName ORDER BY id OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY;
Теперь, если вы нажмете next и захотите следующие 10 ROWS, вам просто нужно передать параметры skip = 10 & limit = 10
SELECT * FROM TableName ORDER BY id OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY;
Точно так же вы можете изменить результат для каждой страницы, передав лимит как угодно.
Согласно вашему коду, я ожидаю, что вы используете метод GET
@api_view(['GET'])
def get(request):
paginator = PageNumberPagination()
skip=request.params.get('skip')
limit=request.params.get('limit')
query = "SELECT * FROM Client_table ORDER BY ID OFFSET "+ skip + " ROWS FETCH NEXT " + limit+" ROWS ONLY"
my_query = query_db(query)
result_page = paginator.paginate_queryset(my_query, request)
json_output = json.dumps(result_page, cls=DjangoJSONEncoder)
return paginator.get_paginated_response(json_output)