Django использует LimitOffsetPagination при изменении результатов?
Я использую django rest frame work и хочу LimitOffsetPagination
https://www.django-rest-framework.org/api-guide/pagination/#limitoffsetpagination
для работы с json-выводом моего представления
class MyList(generics.ListAPIView)
, в котором потенциально можно просмотреть тысячи записей.
Я не могу понять, как заставить его работать так, как нужно, без извлечения всех потенциальных записей против только фрагмента, необходимого для данной страницы.
Проблема возникает из-за того, что мне приходится изменять записи перед возвратом из представления, я не могу просто вернуть набор запросов, я возвращаю свой настроенный список записей.
Если я просто выполняю некоторые манипуляции с кверисетом и возвращаю кверисет, все работает отлично. SQL к БД использует LIMIT и OFFSET, поэтому работает быстро, страница записей извлекается, а json выводится на страницу, как и ожидалось.
Однако мне нужно изменить результаты кверисета, и как только я его оцениваю
mylist = list(queryset)
SQL НЕ использует LIMIT и OFFSET, он получает все записи.
Если я использую нотацию slice в наборе запросов
queryset[offset:offset+limit]
чтобы заставить его получить только то, что мне нужно, а затем изменить эти результаты, что работает до определенного момента (SQL использует LIMIT и OFFSET и т.д.).
Проблема заключается в том, что, скажем, фрагмент состоит из 100 записей, пагинатор будет думать, что всего нужно просмотреть 100 записей, в то время как обычно их несколько тысяч. Таким образом, ссылки на следующую/предыдущую страницу будут неверными, потому что они основаны на общем количестве в 100 записей, а не на реальных тысячах.
Должен ли я делать это каким-то другим способом?