Domanda

Ho creato una nuova proprietà per il mio modello db nel Google App Engine datastore.

Vecchio:

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

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

Come interrogare per i record di logo, che non aver impostato il valore 'is_approved'? Ho cercato

logos.filter("is_approved = ", None)

, ma non ha funzionato. Nel Visualizzatore Dati i nuovi valori dei campi vengono visualizzati come.

È stato utile?

Soluzione

In base alla documentazione App Engine su Query e indici , v'è una distinzione tra soggetti che hanno non il valore di una proprietà, e quelli che hanno un nullo il valore per esso; e "Enti senza una proprietà filtrati vengono mai restituiti da una query." Quindi non è possibile scrivere una query per questi vecchi dischi.

Un articolo utile è Aggiornamento del tuo modello Schema , che dice che l'unico modo per trovare le entità mancanti alcune proprietà è di esaminare tutti loro attualmente supportato. L'articolo ha esempio di codice che mostra come passare da un ampio insieme di soggetti e li aggiorna.

Altri suggerimenti

Forse questo è cambiato, ma sono in grado di filtrare i record in base a nullo campi.

Quando provo il SELECT * FROM Contact WHERE demo=NULL interrogazione GQL, restituisce solo i record per i quali il campo demo manca.

Secondo il http://code.google.com/ appengine / docs / python / datastore / gqlreference.html :

  

Il lato destro di un confronto può essere uno dei seguenti (come   appropriato per il tipo di dati della proprietà): [...] un valore booleano letterale, come VERO o   FALSE; la NULL letterale, che rappresenta il valore nullo (Nessuno in   Python).

Non sono sicuro che "null" è lo stesso di "mancante" però: nel mio caso, questi campi già esisteva nel mio modello, ma non erano popolata sulla creazione. Forse Federico si potrebbe farci sapere se la query NULL funziona nel vostro caso specifico?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top