Сортировка разбитого на страницы списка django rest framework по дате в vue

Список элементов необходимо отсортировать (ASC и DESC) по дате при нажатии. Этот список элементов разбивается на страницы с помощью Django Rest Framework Pagination. Таким образом, первая страница элементов содержит всего 15 результатов. Сортировка по умолчанию - сначала самая новая дата.

Всякий раз, когда список сортируется, текущее состояние сортируется с помощью .sort () посредством мутации в Vue. Однако это работает только для текущего состояния, которое содержит только список элементов, находящихся на первой странице (при условии, что пользователь не перешел на следующую страницу). Это приводит к тому, что порядок действителен только для результатов на странице, но не для всех результатов.

Чтобы решить эту проблему, я мог бы сделать запрос API, чтобы вернуть результаты в правильном порядке, но мой вопрос: есть ли более разумный способ сделать это?


person Vincent    schedule 16.10.2019    source источник


Ответы (1)


Вам необходимо выполнить сортировку в бэкэнде, когда вы выполняете разбиение на страницы, в основном, ваш метод API должен поддерживать параметр сортировки, сортировать список в соответствии с этим параметром, разбивать результаты на страницы после сортировки и возвращать результаты с разбивкой на страницы.

У вашего клиента нет доступа ко всем данным, поэтому вы не можете выполнять сортировку на стороне клиента, когда есть разбиение на страницы, результаты необходимо отсортировать до того, как будет взят срез.

person Ozgur Akcali    schedule 16.10.2019
comment
Спасибо за ваш ответ. По сути, нет другого способа выполнить сортировку, чем я думал. - person Vincent; 16.10.2019