【发布时间】:2012-12-30 03:19:00
【问题描述】:
如何在不使用数据存储区获取对象的情况下获取引用属性的键字符串?
我有 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)
现在我可以从内存缓存中获取视频或曲目:
video = memcache.get(a_video_key_string)
track = memcache.get(str(video.track.key()))
但是,这会为曲目生成一个数据存储请求,即使我不希望它这样做。具体来说,video.track请求会自动调用datastore获取Track对象,然后调用key()确定key字符串。
我想从链接的 ReferenceProperty 中获取键值,而无需实际实例化 Track 对象。你知道我该怎么做吗?
【问题讨论】:
-
您可以使用
KeyProperty代替ReferenceProperty。这样你就只能得到实体的密钥。如果需要加载实体,直接通过key获取。
标签: python google-app-engine datastore referenceproperty