10

mongodbとmongoengineを使用したページ付けについて質問があります。私は将来何百万ものレコードを持つテーブルを持っています。そして、私はこのようにページングを行っています。

これが正しいアプローチかどうかはわかりません

    list = Books.objects.all()
    paginator = DiggPaginator(list, 20, body = 10, tail = 2)

ここでテーブル全体を開いてからページネーションを実行すると、コードが実行されて2番目または任意のページが表示されます。

これは正しいアプローチですか、それともこれを行うためのより良い方法があります。

4

3 に答える 3

26

skipおよびQuerySetlimitから、ページネーションを実行できます。 たとえば、1ページあたり10アイテムの制限で2番目のページを表示する場合は、次のように実行できます。

page_nb = 2 
items_per_page = 10 

offset = (page_nb - 1) * items_per_page

list = Books.objects.skip( offset ).limit( items_per_page )
于 2012-11-22T07:48:28.833 に答える
2

フラスコ-mongoengineプラグインには、 diggpaginatorをフォローするように適応できるpaginatorの例があります。

于 2012-11-22T09:23:03.600 に答える
1

配列スライシング構文も使用できますが、これはもう少し適切で読みやすいものです。

begin = (page - 1) * page_size # offset
end = offset + page_size
list = Books.objects[begin:end]()
于 2022-01-16T00:38:38.900 に答える