wod*_*eke 5 python google-app-engine
我正在使用谷歌应用引擎,并且无法编写查询来过滤ReferenceProperties.
例如.
class Group(db.Model):
name = db.StringProperty(required=True)
creator = db.ReferenceProperty(User)
class GroupMember(db.Model):
group = db.ReferenceProperty(Group)
user = db.ReferenceProperty(User)
Run Code Online (Sandbox Code Playgroud)
我尝试过写这样的东西:
members = models.GroupMember.all().filter('group.name =', group_name)
Run Code Online (Sandbox Code Playgroud)
和其他各种不起作用的东西.希望有人能给我一个正确方向的刺激......
如果您的组具有唯一名称,则"group.name"是组实体的唯一标识符.
这意味着你可以写:
members = models.GroupMember.all().filter(
"group =",model.Group.gql("WHERE name=:1", group_name).get()
)
Run Code Online (Sandbox Code Playgroud)
虽然你只需要这样做,但如果你还没有将组实体放在堆栈的某个地方.
谷歌关于多对多与appengine的文章就在这里.
如果您想要获取组的成员,ReferenceProperties 具有内置功能。
class GroupMember(db.Model):
group = db.ReferenceProperty(Group, collection_name="groupMembers")
user = db.ReferenceProperty(User, collection_name="groupMembers")
Run Code Online (Sandbox Code Playgroud)
然后你可以写:
# get the group entity somehow
group = Group.get(group_key)
# do something with the members, such as list the nicknames
nicknames = [x.user.nickname for x in group.groupMembers]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1237 次 |
最近记录: |