【问题标题】:Efficient Pagination with Flask and MongoengineFlask 和 Mongoengine 的高效分页
【发布时间】:2013-07-08 14:02:50
【问题描述】:

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

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

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)

所以看来我需要一个 Paginator 类,我可以简单地将Report 传递给它,然后以某种方式指定查询信息。

谁能推荐一个解决方案?

【问题讨论】:

标签: pagination flask mongoengine


【解决方案1】:

尝试使用 flask-mongoengine 中的 paginator 你可以像这样使用它:

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

【讨论】:

  • 但是如果我这样做 Pagination(Post.objects(__raw__=query), 1, 10) 会达到同样的懒惰/高效的效果吗?
  • 是的——第一部分必须是可迭代的。然后它会根据页面和计数对哪个未调用的查询集进行切片-在幕后将添加一个跳过和限制。例如:Post.objects(__raw__=query)[0:10] == Post.objects(__raw__=query).limit(10)
  • 这对你有用吗 - 如果是这样,请标记为已回答并在将来帮助其他人:)
猜你喜欢
  • 2013-03-27
  • 1970-01-01
  • 2014-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多