2009-08-09 9 views
5

En Google App Engine, modelado de almacén de datos, me gustaría preguntar cómo puedo verificar el valor nulo de una propiedad con la clase UserProperty. por ejemplo: tengo este código:Cómo comprobar el valor nulo para UserProperty en Google App Engine

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

Cuando quiero comprobar las entradas que tienen el editor no es nula, no puede utilizar este tipo de GqlQuery

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

Me pregunto si hay algún método para verificar la existencia de una variable con UserProperty? ¡Gracias!

+0

¿Podría aclarar su código un poco más? – Diones

Respuesta

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

Sin embargo, no se puede ORDER BY una columna y tener una condición de desigualdad en otra columna: eso es una limitación GAE bien conocida y no tiene nada que ver con la propiedad de ser un UserProperty ni con la verificación de la desigualdad estás haciendo estar con None.

Editar: tenía una = antes, pero como @ Nick señaló, cualquier cosa que sea = Ninguno es> Ninguno, y> es aproximadamente el doble de rápido en GAE (ya que = es sintetizada por la unión de <!!! y>), entonces usar> aquí es una optimización que vale la pena.

+2

En este caso, "WHERE editor>: 1" sería una mejor opción: una consulta! = Se traduce en dos consultas, una para less-than y otra para greater-than. Como nada es menor que ninguno, tiene sentido omitirlo. –

+0

¡Gracias, Alex y Nick! ¡Tus respuestas resolvieron mi problema! –

+0

Gran consejo Nick, tx - Edición para corregir. –