从PonyORM中的一对多关系访问值

时间:2019-04-15 12:33:31

标签: 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 }) 

这对我来说似乎也很丑陋,我想必须有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

事实证明,@Named(value = "articlesManagedBean") @RequestScoped public class ArticlesManagedBean implements Serializable{ @EJB private ItemEntityFacade itemEntityFacade; private List<ItemEntity> allItems; /** * Creates a new instance of ArticlesManagedBean */ public ArticlesManagedBean() { allItems = itemEntityFacade.findAll(); } public List<ItemEntity> getAllItems(){ return allItems; } } 方法已在PonyORM的API Reference中得到了很好的证明,对建立多对多关系有很大帮助。

to_dict()

然后像这样访问dict()条目: for g in games: this_game = g.to_dict( with_collections=True, related_objects=True, exclude=['game_meta', 'statistics'] )