10

我有一个关于使用 mongodb 和 mongoengine 的分页的问题。我有一张表,将来会有数百万条记录。我正在做这样的寻呼。

好吧,我不确定这是正确的方法

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

在这里,我打开整个表格,然后进行分页,然后我们再次进入下一页,上面的代码运行并带来第二页或任何页面。

这是正确的方法还是有更好的方法来做到这一点。

4

3 回答 3

26

可以使用skipand limitfrom QuerySet来实现分页。
例如,如果您想显示第二页,每页限制为 10 个项目,您可以这样做:

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

flask-mongoengine插件有一个分页器示例,您可以适应 digg 分页器。

于 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 回答