高效的分页与瓶和Mongoengine

问题描述:

我有一个Flask应用程序,我想要显示来自MongoDB集合的分页表数据。但是,这个集合中可能有很多文档,所以我想暂时加载它们 - 只加载即将显示的文档。高效的分页与瓶和Mongoengine

我的问题是,在我的应用程序在一个页面上,我想分页:

Stuff.objects()

但在不同的页面,我想分页:

Stuff.objects(__raw__=query)Stuff.objects(message__in=Message.objects(__raw__=query))

调用这些特定函数会自动将所有相关对象加载到内存中(正如我通过运行locals()发现的),所以我需要分页他呼吁有:

Stuff.objects().skip(number).limit(pagelength),或 Stuff.objects(__raw__=query).skip(number).limit(pagelength)

所以它似乎我需要一个分页程序类,我可以简单地传递到Report,然后以某种方式指定查询的信息。

任何人都可以推荐一个解决方案吗?

+0

你见过这个片段? http://flask.pocoo.org/snippets/44/ – codegeek

尝试使用从flask-mongoenginepaginator您可以使用它像这样:

paginator = Pagination(Post.objects, 1, 10) 
print paginator.items 
+0

但是,如果我执行'分页(Post.objects(__ raw __ = query),1,10)',它会达到相同的惰性/高效效果吗? –

+0

是的 - 第一部分必须是可迭代的。其中一个未调用的查询集将根据页面和计数进行切片 - 后台将添加一个跳过和限制。例如:'Post.objects(__ raw __ = query)[0:10]'=='Post.objects(__ raw __ = query).limit(10)' – Ross

+0

是否为您工作 - 如果是的话请标记为已回答并帮助其他人未来的人:) – Ross