2010-02-17 16 views
6

Intento obtener datos del almacén de datos del motor de la aplicación.App Engine, Python: cómo filtrar la consulta por ID?

filtrado de consulta por 'título' (o cualquier otra propiedad) funciona:

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

Pero lo mismo con la identificación - no:

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

Creo que hay algo especial IDs y KEYs en el almacén de datos, pero no puedo encontrar cómo implementar la obtención de datos por ID.

+0

Necesita más información. ¿Contexto? ¿Cuáles son estos atributos? –

Respuesta

13

Trate

obj = PageModel.get_by_id(page_id) 

lugar. Esto supone que la ID con la que está trabajando es la identificación numérica de una clave de almacén de datos (es decir, proviene de algo como obj.key().id()) y no algún campo de ID arbitrario que haya agregado a su PageModel.

+0

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

2

Puede filtrar los datos mediante el uso de clave (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) 

Sin embargo, se prefiere el método get_by_id (id) al recuperar una entrada.