2009-08-09 41 views
5

在Google App Engine数据存储建模中,我想问如何检查类UserProperty的属性的空值? 例如: 我有这样的代码:如何在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检查变量存在的方法? 谢谢!

+0

你能澄清一下你的代码吗? – Diones 2009-08-09 20:42:04

回答

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

但是,你不能ORDER BY一列对另一列不等式条件:这是一个众所周知的GAE的限制,并没有任何与物业是一个UserProperty也不与不平等检查你和None一起生活。

编辑:我有一个=前,但@Nick指出,任何的=无是>无,>快于GAE的两倍左右(因为=是由<工会合成!!和>),所以使用>这里是一个有价值的优化。

+2

在这种情况下,“WHERE editor>:1”将是更好的选择 - != query会被翻译成两个查询 - 一个用于小于,另一个用于大于。由于没有什么比None更少,因此跳过它是有道理的。 – 2009-08-10 07:46:49

+0

谢谢Alex和Nick !!!你的回答解决了我的问题! – 2009-08-10 11:09:06

+0

伟大的提示尼克,TX - 编辑修复。 – 2009-08-10 14:30:44