对于一个游戏数据库,其中一个游戏被不同的用户称为不同的名称,我有两个表,设置为一对多:
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 })
这对我来说似乎也很丑陋,我想必须有更好的方法吗?
答案 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']
)