1

我有一个继承自 ndb.Model 的 Story 模型,具有 IntegerProperty 字数。我正在尝试查询具有特定字数范围的 Story 对象,但无论过滤器属性如何,查询似乎都返回相同的结果。

对于此代码:

q = Story.query()
q.filter(Story.wordCount > 900)
for s in q.fetch(5):
    print s.title / s.wordCount

我得到这个结果:

如果只是... / 884
定时发布 / 953
祖父悖论 / 822 驾驭布兰
鹿 / 1618
Quantum erat demostrandum / 908

这是故事声明:

class Story(ndb.Model):
    title = ndb.StringProperty(required=True)
    wordCount = ndb.IntegerProperty('wc')

我希望只得到正好有 900 个字的故事——或者没有。不平等和排序也被打破了。我尝试部署到 GAE,我看到了同样的错误结果。

关于什么会导致这种情况的任何想法?

4

1 回答 1

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
于 2013-09-04T17:15:39.450 回答