2010-02-17 10 views
6

Provo a ottenere dati dal datastore del motore dell'app.App Engine, Python: come filtrare la query per ID?

query di filtro da 'titolo' (o qualsiasi altra proprietà) funziona:

obj = db.Query(PageModel).filter('title',title)[0] 

Ma la stessa cosa con ID - non lo fa:

obj = db.Query(PageModel).filter('ID',page_id)[0] 

penso che ci sia qualcosa di speciale ID e chiavi in ​​archivio dati, ma non riesco a trovare, come implementare il recupero dei dati per ID.

+0

Richiede ulteriori informazioni. Contesto? Quali sono questi attributi? –

risposta

13

Prova

obj = PageModel.get_by_id(page_id) 

invece. Ciò presuppone che l'ID con cui stai lavorando sia l'ID numerico di una chiave del datastore (ad esempio, proveniente da qualcosa come obj.key().id()) e non un campo ID arbitrario che hai aggiunto al tuo PageModel.

+0

http://code.google.com/appengine/docs/python/datastore/modelclass.html#Model_get_by_id – Ryan

2

È possibile filtrare i dati utilizzando la chiave (s):

from google.appengine.ext.db import Key 
key = Key('bgakaWdyc3NlcnIPCxIJRmVlZEVudHJ5GAwM') 

# Match many 
PageModel.all().filter('__key__ IN ', [key]) 
# Match one 
PageModel.all().filter('__key__ = ', key) 

Tuttavia, il metodo get_by_id (id) è preferito durante il recupero di una voce.

Problemi correlati