5

在Google App Engine,数据存储建模中,我想问一下如何检查具有类UserProperty的属性的空值?例如:我有这个代码:

class Entry(db.Model):
  title = db.StringProperty()
  description = db.StringProperty()
  author = db.UserProperty()
  editor = db.UserProperty()
  creationdate = db.DateTimeProperty()

当我想检查那些编辑器不为空的条目时,我不能使用这种 GqlQuery

query = db.GqlQuery("SELECT * FROM Entry " +
                    "WHERE editor IS NOT NULL" +
                                    "ORDER BY creationdate DESC")
    entries = query.fetch(5)

我想知道是否有任何方法可以使用 UserProperty 检查变量是否存在?谢谢!

4

1 回答 1

13
query = db.GqlQuery("SELECT * FROM Entry WHERE editor > :1",None)

但是,您不能在ORDER BY一个列上同时在另一列上有不等式条件:这是众所周知的 GAE 限制,与作为 UserProperty 的属性无关,也与您使用 None 进行的不等式检查无关。

编辑:我之前有一个!=,但正如@Nick 指出的那样,任何!= None 都是 > None,并且 > 在 GAE 上的速度大约是两倍(因为!= 是由 < 和 > 的联合合成的),所以使用> 这里有一个值得优化的地方。

于 2009-08-09T21:21:05.163 回答