Как условно включить и выключить Cursor Pagination на Django Rest Framework?
У меня есть конкретный случай, когда мне нужно сделать доступной одну и ту же конечную точку queryset для фронтенда с пагинацией и без нее. Мне нужно использовать CursorPagination и в настоящее время я просто устанавливаю pagination_class = CursorPagination на моем *ViewSet классе.
Есть ли простой способ выполнить это требование?
Вы можете использовать класс Paginator в следующем примере:
from django.core.paginator import Paginator
YourClass():
#your code
paginator = Paginator(user_list, 10)
try:
users = paginator.page(page)
except PageNotAnInteger:
users = paginator.page(1)
Нашел решение.
Вы можете переопределить переменную page_size_query_param в классе CursorPagination. Таким образом, вы можете позволить фронтенду устанавливать, сколько записей он будет получать на странице. Таким образом, фронтенд может использовать очень большое число для параметра запроса размера страницы, чтобы получить все данные.
Не уверен, что такой подход имеет какие-то присущие ему проблемы