4

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

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

1 个等号 (=) 是文档所说的我们应该拥有它的方式,但是当我只有 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)))
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 回答