如何使用NDB获取Google App Engine中的N个最新模型?

时间:2013-10-09 00:25:50

标签: python google-app-engine google-cloud-datastore app-engine-ndb

我可能存储了数千个“报告”模型。我正在尝试通过DateTimeProperty获取50个最新的报告。虽然我现有的查询确实按照从新到旧的顺序获取报告,但它不会返回最新的 50.而是返回较旧的(已排序的)选择。我在这里缺少什么?

class Report(ndb.polymodel.PolyModel):
    received_time = ndb.DateTimeProperty(required=True, auto_now_add=True)
    report_state = ndb.StringProperty(choices=set(['unresolved', 'resolved']))

...

reports_query = Report.query(
    Report.report_state == 'resolved',
    ancestor = some_key) \
    .order(Report.received_time)
resolved_reports = reports_query.fetch(50)

当我在测试时,如果我的数据存储区中有200个报告,并且我获取了200个,那么我将按正确的顺序对所有报告进行排序。

1 个答案:

答案 0 :(得分:3)

您的查询按received_time的递增顺序排序,因此您可以获得较早时间(较短时间=较早时间)的查询。要获得最旧的订单,请更改订单:

.order(-Report.received_time)