如何獲取引用屬性的密鑰字符串而不使用數據存儲獲取對象?獲取引用屬性的密鑰字符串而不使用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對象。你知道我能做到嗎?
您可以使用'KeyProperty'而不是'ReferenceProperty'。這樣你只能得到實體的密鑰。如果您需要加載實體,您可以直接通過密鑰獲取。 –