Как сделать срез в Django ORM без all()?
Если Вы считаете, что из базы в данном случае вытаскиваются все записи, а потом на уровне кода часть из них обрезается, то это не так. all() не делает запрос к базе. Запрос вместе с LIMIT выполняется уже внутри пагинатора.
Это я к тому, что, скорее всего, Вы увидели, что страница с пагинатором грузится безумно долго и предположили, что из базы выгребаются все записи, но это совсем не так. Долго это выполняется потому, что на таком количестве строк стандартные решения пагинации будут в принципе работать плохо, потому что на "дальних" страницах курсор базы данных будет перебирать все записи, идущие до этой страницы. Кроме того, пагинатор выполняет count-запрос, который выполняется долго, потому что это фулскан всей таблицы, где миллионы записей.
Во-первых, вам не нужен all, можно простоfooset = barmodel.objects.order_by('-foobar')
Во-вторых, у класса QuerySet переопределена операция среза, так что fooset[:100] превратиться в select с limit 100.