Google App Engine NDB祖先查询无效

时间:2012-09-04 15:49:10

标签: python google-app-engine

我正在尝试执行以下查询:

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

1等号(=)是docs表示我们应该拥有它的方式,但是当我只有1个等号(构建错误)时,我的应用程序不会运行。如果我使用两个等号,例如ancestor == userKey,则应用程序会运行,但我会得到NameError: global name 'ancestor' is not defined。是什么给了什么?

我还尝试了此查询的另一个变体,但同样的问题出现了:

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

1 个答案:

答案 0 :(得分: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))