2012-12-30 38 views
0

如何獲取引用屬性的密鑰字符串而不使用數據存儲獲取對象?獲取引用屬性的密鑰字符串而不使用App Engine中的數據存儲

我有2名數據存儲對象鏈接通過db.ReferenceProperty:

class Track(db.Model): 
    name = db.StringProperty() 
class Video(db.Model): 
    name = db.StringProperty() 
    track = db.ReferenceProperty(Track, collection_name='video-track') 

這使得很容易從給定的視頻獲得鏈接的軌道:

video = Video.get(a_video_key_string) 
track = video.track 

而且我可以將這些存儲到內存緩存爲以後快速訪問:

memcache.add(str(video.key()), video) 
memcache.add(str(track.key()), track) 

現在我可以從memcache獲得視頻或音軌:

video = memcache.get(a_video_key_string) 
track = memcache.get(str(video.track.key())) 

但是,這會爲軌道生成數據存儲請求,即使我不希望它。具體來說,video.track請求會自動調用數據存儲以獲取Track對象,然後調用key()來確定鍵字符串。

我想從鏈接的ReferenceProperty中獲取鍵值,而無需實際實例化Track對象。你知道我能做到嗎?

+0

您可以使用'KeyProperty'而不是'ReferenceProperty'。這樣你只能得到實體的密鑰。如果您需要加載實體,您可以直接通過密鑰獲取。 –

回答

相關問題