Google App Engine投影查询可以返回实体密钥吗?

时间:2012-05-11 16:21:54

标签: python google-app-engine google-cloud-datastore

我们说我有:

class Like(db.Model):
    user = db.ReferenceProperty(User,collection_name='likes')
    photo = db.ReferenceProperty(Photo,collection_name='likes_received')
    created = db.DateTimeProperty(auto_now_add=True)

是否可以运行仅返回照片键列表的投影查询?

photos = db.GqlQuery("SELECT photo FROM Like WHERE created < DATETIME(2013, 1, 1, 0, 0, 0)").fetch(10)

上面的代码产生:

BadValueError: Unsupported data type (<class 'models.Photo'>)

2 个答案:

答案 0 :(得分:1)

听起来你的Photo类尚未导入。

答案 1 :(得分:1)

我道歉,我的第一个回答是错误的。投影查询存在一个实际问题 - 尚未支持ReferenceProperty。阿尔弗雷德正在研究这个问题;因为今天1.6.6预发布SDK已经发布,并且已经存在于1.6.5 SDk中,我怀疑我们会在1.6.6中修复此问题,但1.6.7是可能的。

作为解决方法,您可以使用db.ListProperty(db.Key),它是一个键列表(您只存储一个键),或者一个StringProperty,其值是键的str()。