我正在对已排序的模型实施分页,而且就目前而言,我的查询正在获取太多数据。我显示指向页面的链接的方式与Google类似:当前页面突出显示,并且您可以导航到页面周围的“填充”。例如,如果有20个页面,填充是5,而您在第10页,页面链接将如下所示:
... 5 6 7 8 9 [10] 11 12 13 14 15 ...
问题是,我需要计算当前页面之后的页数,以便知道应该显示当前页面的页面链接数量。为此,我总结了填充页面所需的项目数,加上当前页面加上一个(知道是否显示“...”),然后获取这些结果。这导致对结果的大量查询,最终,我只需要一小部分。
Google App Engine api提供count() function,返回查询提取的结果数。但是,它不允许我指定偏移量。
如何解决此问题?
我正在考虑在当前页面之后的下一页上获取第一个项目,然后在另一个对该项目的值进行排序的查询上执行count(),如果这是有意义的话。我是在正确的轨道还是我完全错过了什么?我对app引擎比较陌生,所以就这么简单!谢谢:)
更新
谢谢你,彼得。
游标确实是合适的使用方法。这是一个希望实现同样目标的人的例子:
# For example, the following query has 27 results.
book_query = Book.all().filter("name_lowercase < ", "b" )
# Let's fetch 10 books starting at offset 0...
r = book_query.fetch(10, 0)
# This returns a cursor to the book after the last fetched result, index 10
c = book_query.cursor()
# Now let's count the number of results after our fetch, limit 100.
# To use cursors, the query must be exactly the same.
book_query2 = Book.all().filter("name_lowercase < ", "b" ).with_cursor(c)
book_query2.count(100) # Returns 17