从 PonyORM 中的一对多关系访问值
Accessing values from one-to-many relationship in PonyORM
对于游戏数据库,其中一个游戏被不同的用户称为不同的名称,我有两个表,设置为一对多:
class Game(db.Entity):
name = Set('Name')
...
class Name(db.Entity):
game = Required(Game)
name = Required(str)
...
如何访问特定游戏的名称?它们返回为 "Multiset",(我认为)这是一个特殊的 Counter 对象,当我这样做时:
games = Game.select()
for g in games:
names = g.name.name
print(names)
>>> Multiset({'Sticks And Stones': 1, 'May Break Your Bones': 1 })
这在我看来也很丑陋,我想一定有更好的方法吧?
事实证明,to_dict()
方法在 PonyORM 的 API Reference 中有详细记录,对 to-many 关系有很大帮助。
for g in games:
this_game = g.to_dict(
with_collections=True,
related_objects=True,
exclude=['game_meta', 'statistics']
)
然后像这样访问 dict() 条目:this_game['name']
对于游戏数据库,其中一个游戏被不同的用户称为不同的名称,我有两个表,设置为一对多:
class Game(db.Entity):
name = Set('Name')
...
class Name(db.Entity):
game = Required(Game)
name = Required(str)
...
如何访问特定游戏的名称?它们返回为 "Multiset",(我认为)这是一个特殊的 Counter 对象,当我这样做时:
games = Game.select()
for g in games:
names = g.name.name
print(names)
>>> Multiset({'Sticks And Stones': 1, 'May Break Your Bones': 1 })
这在我看来也很丑陋,我想一定有更好的方法吧?
事实证明,to_dict()
方法在 PonyORM 的 API Reference 中有详细记录,对 to-many 关系有很大帮助。
for g in games:
this_game = g.to_dict(
with_collections=True,
related_objects=True,
exclude=['game_meta', 'statistics']
)
然后像这样访问 dict() 条目:this_game['name']