【发布时间】:2012-12-18 11:13:19
【问题描述】:
我正在尝试为我的应用程序上的查询进行正向和反向分页。
我从示例开始:https://developers.google.com/appengine/docs/python/ndb/queries#cursors
我希望该示例执行典型的向前/向后分页以创建可以传递给模板的光标,以便在当前页面之后/之前的页面的后续请求中使用。但它所做的是为同一页面获取游标,一个从头开始,另一个从结尾(如果我理解正确的话)。
我想要的是一个指向下一页开头的光标,以及一个指向前一页开头的光标,以便在我的 UI 中使用。
根据上面提到的例子,我几乎用下面的代码做到了这一点:
curs = Cursor(urlsafe=self.request.get('cur'))
q = MyModel.query(MyModel.usett == usett_key)
q_forward = q.order(-MyModel.sugerida)
q_reverse = q.order(MyModel.sugerida)
ofus, next_curs, more = q_forward.fetch_page(num_items_page,
start_cursor=curs)
rev_cursor = curs.reversed()
ofus1, prev_curs, more1 = q_reverse.fetch_page(num_items_page,
start_cursor=rev_cursor)
context = {}
if more and next_curs:
context['next_curs'] = next_curs.urlsafe()
if more1 and prev_curs:
context['prev_curs'] = prev_curs.reversed().urlsafe()
问题,也是这个问题的重点,是我使用more 和more1 来查看是否有下一页。这在倒退的意义上是行不通的。第一个页面more1是True,第二个页面more1是False,后续页面是True。
我需要为第一页提供False 并为所有其他页面提供True 的东西。看起来这个 more 返回值是要使用的东西,但也许我的查询设置错误,或者其他任何错误。
谢谢大家!
编辑:由于我没有找到简单的解决方案,我改用ndbpager。
【问题讨论】:
标签: google-app-engine app-engine-ndb