请参阅下面的代码:
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
的情况答案 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