Pregunta

He creado una nueva propiedad para mi modelo db en el almacén de datos de Google App Engine.

antigua:

class Logo(db.Model):
  name = db.StringProperty()
  image = db.BlobProperty()

New:

class Logo(db.Model):
  name = db.StringProperty()
  image = db.BlobProperty()
  is_approved = db.BooleanProperty(default=False)

Cómo consultar los registros del logotipo, que al no haber establecido el valor 'is_approved'? Probé

logos.filter("is_approved = ", None)

pero no funcionó. En el visor de datos los nuevos valores de los campos se muestran como.

¿Fue útil?

Solución

De acuerdo con la documentación de App Engine en Consultas e índices , hay una distinción entre entidades que tienen valor para una propiedad, y los que tienen un nula valor para ella; y "Entidades sin una propiedad filtrada nunca son devueltos por una consulta." Por lo que no es posible escribir una consulta para estos registros antiguos.

Un artículo útil es Actualización del esquema de su modelo , que dice que el único manera de encontrar entidades que faltan algunos bienes es examinar todos ellos actualmente soportada. El artículo tiene código de ejemplo que muestra cómo desplazarse a través de un amplio conjunto de entidades y actualizarlos.

Otros consejos

Tal vez esto ha cambiado, pero soy capaz de filtrar registros basándose en nula campos.

Cuando intento SELECT * FROM Contact WHERE demo=NULL la consulta GQL, devuelve sólo los registros para los que falte el campo de demostración.

De acuerdo con el documento http://code.google.com/ appengine / docs / python / almacén de datos / gqlreference.html :

  

El lado derecho de una comparación puede ser uno de los siguientes (como   apropiada para el tipo de datos de la propiedad): [...] un booleano literal, como VERDADERO o   FALSO; la NULL literal, que representa el valor nulo (ninguno en   Python).

No estoy seguro de que "nulo" es el mismo que "perdido" sin embargo: en mi caso, estos campos ya existía en mi modelo, pero no estaban pobladas en la creación. Tal vez Federico que podría hacernos saber si la consulta NULL trabaja en su caso específico?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top