我有一个继承自ndb.Model的Story模型,带有IntegerProperty wordCount。我正在尝试查询具有特定字数范围的Story对象,但无论过滤器属性如何,查询似乎都会返回相同的结果。
对于此代码:
q = Story.query()
q.filter(Story.wordCount > 900)
for s in q.fetch(5):
print s.title / s.wordCount
我得到了这个结果:
如果只是...... / 884
定时发布/ 953
祖父悖论/ 822
利用brane-deer / 1618
Quantum erat demonstrandum / 908
这是故事宣言:
class Story(ndb.Model):
title = ndb.StringProperty(required=True)
wordCount = ndb.IntegerProperty('wc')
我希望只能获得900字的故事 - 或者没有。不平等和排序也被打破。我尝试部署到GAE,我看到了相同的破坏结果。
关于导致这种情况的任何想法?
答案 0 :(得分:7)
NDB查询是不可变的,当您调用q.filter(Story.wordCount > 900)
时,您正在创建新查询,而不是将其分配给任何内容。重新分配到q
变量应该适合您:
q = Story.query()
q = q.filter(Story.wordCount > 900)
for s in q.fetch(5):
print s.title / s.wordCount