Как установить нумерацию страниц в запросе SQL на странице? - PullRequest
0 голосов
/ 05 марта 2020

как установить нумерацию страниц на странице в запросе SQL, я попытался использовать django разбиение на страницы по умолчанию, но в моем коде это не сработало, и я осуществляю прямую выборку данных, используя SQL raw-query вместо ORM. я думаю, что другой способ - это установить нумерацию страниц, используя SQL запрос LIMIT или OFFSET, но я понятия не имею о конечной точке url, когда я ищу следующую страницу.

class Order_ListAPIView(APIView):

    def get(self,request,format=None):

        if request.method == 'GET':
            cur,conn = connection()
            order_query = ''' SELECT * FROM orders'''
            order_detail_query = ''' SELECT * FROM order_details'''

            with conn.cursor(MySQLdb.cursors.DictCursor) as cursor:

                cursor.execute(order_query)
                order_result = cursor.fetchall()
                order_data = list(order_result)

            ...
             ... #rest_code
              ...


            return Response({"order_data":order_data},status=status.HTTP_200_OK)
        else:
            return Response(status=status.HTTP_400_BAD_REQUEST)

1 Ответ

0 голосов
/ 07 марта 2020

Я не слишком знаком с Django, но, как вы говорите, вы сами извлекаете необработанные данные из БД с помощью MySQL, поэтому для настройки нумерации страниц нужно просто добавить LIMIT $offset, $perpage в ваш MySQL запрос ...

SELECT * FROM order_details LIMIT 0, 5;

Этот запрос, например, даст вам страницу 1 с 5 на страницу. Чтобы попасть на страницу 5 с 5 на страницу, это LIMIT 4*5, 5 = LIMIT 25, 5. Если вы хотите попасть на страницу 37 с 10 на страницу, это будет LIMIT 36*10, 10 = LIMIT 360, 10.

Это должно решить проблему с нумерацией страниц с частью MySQL. Вам нужно настроить vars для определения как page, так и perpage от пользователя, возможно, из параметра GET.

...