AppEngine Python获取所有引用
我的问题很简单。我有AppEngine Python获取所有引用,python,google-app-engine,google-cloud-datastore,Python,Google App Engine,Google Cloud Datastore,我的问题很简单。我有A型和B型: class Lobby(db.Model): name = db.StringProperty() class UserModel(db.Model): name = db.StringProperty() lobby = db.ReferenceProperty(Lobby, collection_name="lobby") 现在,我从存储中获取/alllobble实体,并希望访问每个lobble的相关用户。我不能通过调用lob
A型
和B型
:
class Lobby(db.Model):
name = db.StringProperty()
class UserModel(db.Model):
name = db.StringProperty()
lobby = db.ReferenceProperty(Lobby, collection_name="lobby")
现在,我从存储中获取/alllobble
实体,并希望访问每个lobble的相关用户。我不能通过调用lobby\u entity.aUsers来实现这一点
这是如何实现的?使用GQL:
lobbies = Lobby.all().fetch(10)
keys = [lobby.key() for lobby in lobbies]
q = aUser.gql('WHERE lobby IN :1', keys)
users = q.fetch(1000)
请注意,如果你有很多游说团体,这项工作就不太好;IN查询最多只支持30个值。(https://developers.google.com/appengine/docs/python/datastore/gqlreference)
请不要以小写字母开头模型类名。查看PEP 8。我可能会有30多个大厅。那么最好的办法是对信息进行非规范化,并在每个大厅的KeyListProperty中记录用户列表。当用户签入或签出大厅时更新此信息。这应该适用于每个大厅数百名用户,并且不受大厅数量的限制。新的XG事务可能有助于实现这种事务性。