4

次のクエリを実行しようとしています。

query = Comment.query(ancestor = userKey, ndb.OR(Comment.modifiedDate > lastSyncDate, Comment.activityDate > lastSyncDate))

1等号(=)は、ドキュメントがそれを持っているべきだと言った方法ですが、等号が1つしかない場合(ビルドエラー)、アプリは実行されません。のように2つの等号を使用するとancestor == userKey、アプリは実行されますが、が表示されNameError: global name 'ancestor' is not definedます。何が得られますか?

このクエリの別のバリアントも試しましたが、まったく同じ問題が発生します。

query = Comment.query(ndb.AND(ancestor == userKey, ndb.OR(Comment.modifiedDate > lastSyncDate, Comment.activityDate > lastSyncDate)))
4

1 に答える 1

6

メソッドの位置パラメーターのancestorにキーワードを配置する必要があります。

query = Comment.query(
    ndb.OR(Comment.modifiedDate > lastSyncDate, Comment.activityDate > lastSyncDate),
    ancestor=userKey)

または、filtersキーワードを明示的に使用するか、次の.filter()メソッドを使用します。

query = Comment.query(
    ancestor=userKey,
    filters=ndb.OR(Comment.modifiedDate > lastSyncDate, Comment.activityDate > lastSyncDate))

また

query = Comment.query(ancestor=userKey).filter(ndb.OR(Comment.modifiedDate > lastSyncDate, Comment.activityDate > lastSyncDate))
于 2012-09-04T15:52:37.993 に答える