1

IntegerProperty wordCount を使用して、ndb.Model から継承する Story モデルがあります。特定の単語数範囲を持つ Story オブジェクトをクエリしようとしていますが、フィルタ プロパティに関係なく、クエリは同じ結果を返すようです。

このコードの場合:

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

私はこの結果を得ます:

もしも... / 884
Timed release / 953
Grandfather paradox / 822
Brane-deer を利用する / 1618
Quantum erat demonstrandum / 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 に答える