4

假设我有:

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'>)
4

2 回答 2

1

听起来您的照片课程尚未导入。

于 2012-05-12T14:46:51.757 回答
1

对不起,我的第一个答案是错误的。投影查询存在一个真正的问题——ReferenceProperty (尚不)受支持。阿尔弗雷德正在调查这个;由于 1.6.6 预发行版 SDK 今天发布了,而且这已经存在于 1.6.5 SDK 中,我怀疑我们是否会在 1.6.6 中修复这个问题,但 1.6.7 是可能的。

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

于 2012-05-15T20:12:23.440 回答