ndb.IntegerProperty返回一个空列表

时间:2014-02-17 19:17:17

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

请参阅下面的代码:

from google.appengine.ext import ndb
class TestModel(ndb.Model):
    num = ndb.IntegerProperty(required=False, default=0, indexed=False)
    txt = ndb.StringProperty(required=True, indexed=False)
class TestHandler(BaseHandler):
    def get(self):
        for i in range(0, 20):
            m = TestModel(num=i, txt=' hello world ')
            m.put()
        data = TestModel.query().order(TestModel.num).fetch(20) # empty list!
        data = TestModel.query().order(-TestModel.num).fetch() # empty list!
        count = TestModel.query().count() # 20
app = webapp2.WSGIApplication([
    ('/', TestHandler)
], debug=True)

我做错了什么? 我已经阅读了这篇文章https://developers.google.com/appengine/docs/python/ndb/queries?hl=ru#order

但是我很困惑,请帮助我

UDP: 它适用于testmodel实体超过20

的情况

1 个答案:

答案 0 :(得分:3)

如果您想按TestModel.num订购查询,则应启用数据存储区索引TestModel.num

num = ndb.IntegerProperty(required=False, default=0, indexed=True)

num = ndb.IntegerProperty(required=False, default=0)#默认索引=真

要在Query结果中获取已添加的实体,您需要重新放置()所有这些实体。

有关数据存储区索引的更多信息:https://developers.google.com/appengine/docs/python/datastore/indexes