2009-08-09 2 views
5

В Google App Engine, моделировании хранилищ данных, я хотел бы спросить, как я могу проверить нулевое значение свойства с классом UserProperty? , например: У меня есть этот код:Как проверить значение null для UserProperty в Google App Engine

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

ответ

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

Однако, вы не можете ORDER BY один столбец и есть условие неравенства на другой колонке: это хорошо известный GAE ограничение и не имеет ничего общего с собственностью будучи UserProperty, ни с проверкой неравенства вы делаете быть с Ником.

Редактировать: У меня был = раньше, но, как @Nick указал, что-нибудь в этом нет = Нет это> Нет, и> примерно в два раза быстрее на GAE (с = синтезируется объединением <!! и>), поэтому использование> здесь - стоящая оптимизация.

+2

В этом случае «WHERE editor>: 1» будет лучшим выбором - запрос a! = Преобразуется в два запроса - один для менее, а один для большего. Поскольку ничто не меньше, чем Нет, имеет смысл пропустить его. –

+0

Спасибо, Алекс и Ник! Ваши ответы решают мою проблему! –

+0

Отличный совет Nick, tx - редактирование для исправления. –