Как да проверите нулева стойност за UserProperty в Google App Engine

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

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

Когато искам да проверя онези записи, за които редакторът не е null, не мога да използвам този вид GqlQuery

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

Чудя се дали има някакъв метод за проверка на съществуването на променлива с UserProperty? Благодаря ти!


person Hoang Pham    schedule 09.08.2009    source източник
comment
Бихте ли изяснили кода си малко повече?   -  person Diones    schedule 10.08.2009


Отговори (1)


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

Не можете обаче да ORDER BY една колона и да имате условие за неравенство в друга колона: това е добре известно ограничение на GAE и няма нищо общо със свойството, което е UserProperty, нито с проверката за неравенство, която вие' re doing be with None.

Редактиране: Имах != преди, но както посочи @Nick, всичко, което е != None е > None и > е около два пъти по-бързо при GAE (тъй като != се синтезира чрез обединение на ‹ и >), така че използването на > тук е полезна оптимизация.

person Alex Martelli    schedule 09.08.2009
comment
В този случай редакторът WHERE › :1 би бил по-добър избор - заявка != се превежда в две заявки - една за по-малко от и една за по-голямо от. Тъй като нищо не е по-малко от None, има смисъл да го пропуснете. - person Nick Johnson; 10.08.2009
comment
@Hoang, винаги се радвам да помогна, но не забравяйте да приемете отговор, който решава проблема ви -- това е елементарен етикет! - person Alex Martelli; 10.08.2009
comment
hihi, съжалявам момчета, нов съм в stackoverflow :D току-що се опитах да използвам този уебсайт преди 19 дни с два въпроса ;) наистина помага ;) - person Hoang Pham; 11.08.2009