我是App Engine数据存储区的新手,我无法理解这一点。
我有这些模型:
class SomeUser(User):
name = db.StringProperty()
class Group(db.Model):
title = db.StringProperty()
date_started = db.DateTimeProperty(auto_now_add=True)
class GroupParticipant(db.Model):
group = db.ReferenceProperty(Group, collection_name = 'participants')
participant = db.ReferenceProperty(SomeUser)
is_owner = db.BooleanProperty()
class SomeUser(User):
name = db.StringProperty()
class Group(db.Model):
title = db.StringProperty()
date_started = db.DateTimeProperty(auto_now_add=True)
class GroupParticipant(db.Model):
group = db.ReferenceProperty(Group, collection_name = 'participants')
participant = db.ReferenceProperty(SomeUser)
is_owner = db.BooleanProperty()
如何查询数据存储区以获得如下结果:
答案 0 :(得分:3)
根本没有联接。您必须手动获取所有数据。例如,您可以从GroupParticipant
获取所有记录,然后在循环中获取所有Group
和SomeUser
(请注意,按Key
提取非常快)
-
顺便说一下,使用不同的数据结构可能更好,比如class SomeUser(User):
name = db.StringProperty()
class Group(db.Model):
title = db.StringProperty()
date_started = db.DateTimeProperty(auto_now_add=True)
owner = db.ReferenceProperty(SomeUser)
participants = db.ListProperty(db.Key)
在这种情况下,您只需一次查询即可获取所有必需的数据