gpt4 book ai didi

google-app-engine - 在 appengine 中使用反向光标进行分页

转载 作者:太空宇宙 更新时间:2023-11-03 15:25:47 26 4
gpt4 key购买 nike

我正在尝试为我在我的应用程序中的查询进行向前和向后分页。

我从以下示例开始: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()

问题,也是这个问题的重点,是我使用moremore1 来查看是否有下一页。这在倒退的意义上是行不通的。对于第一页,more1True,在第二页 more1False,后续页面给出

我需要为第一页提供 False 并为所有其他页面提供 True 的内容。似乎这个 more 返回值是要使用的东西,但也许我有一个错误的查询设置,或者任何其他错误。

谢谢大家!

编辑:因为我没有找到一个简单的解决方案,我转而使用 ndbpager .

最佳答案

没有这样的东西。如果您使用游标开始查询(第一页通常没有游标),您知道在当前页之前(至少)有一页。访问上一页的一个常见技巧是反转排序顺序。

如果您有一个按创建日期 desc 排序的列表,您可以使用当前页面的第一个元素的创建日期,使用反向排序顺序查询创建日期 < 此创建日期的元素。这将返回比给定创建日期更新的最旧元素。翻转检索到的元素列表(将它们重新调整为正确的顺序),您就可以看到之前页面的元素,而无需使用光标。

注意:这需要您的排序顺序的值是不同的。

在某些情况下,还可以使用允许随机访问不同页面的预构建索引,参见 https://bitbucket.org/viur/server/src/98de79b91778bb9b16e520acb28e257b21091790/indexes.py了解更多。

关于google-app-engine - 在 appengine 中使用反向光标进行分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13931703/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com