2009-08-09 42 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