2010-02-17 15 views
6

Uygulama motoru veri deposundan veri almaya çalışıyorum.App Engine, Python: kimliğine göre sorguyu nasıl filtreleyebilirim?

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

Ama kimliğiyle aynı şey - değil:

'başlık' (veya başka mülkiyet) tarafından

Filtreleme sorgu çalışır

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

ben özel bir şey olduğunu düşünüyorum Veri mağazasındaki kimlikleri ve KEY'leri buldum, ancak kimliğiyle veri almayı nasıl başaramıyorum.

+0

Daha fazla bilgi gerekiyor. Bağlam? Bu özellikler nelerdir? –

cevap

13

yerine

obj = PageModel.get_by_id(page_id) 

deneyin. Bu, üzerinde çalıştığınız kimliğin, PageModel ürününe eklediğiniz bazı isteğe bağlı kimlik alanı değil, veri deposu anahtarının sayısal kimliğidir (yani obj.key().id() gibi bir şeyden geldi).

+0

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

2

Bu anahtar (lar) kullanarak veri filtre:

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) 

Bununla birlikte, yöntem, get_by_id (kimlik) tercih edilir bir giriş getirirken.