我试图构建一个长生不老药模型,在这个模型中我有一个元组列表(可变大小)的类。在
一个例子就是配方
虽然我可以这样做:
class Recipe(Entity):
ingrediants = OneToMany('IngrediantList')
cooking_time = Field(Integer)
...
class IngrediantList(Entity):
ingrediant = ManyToOne('Ingrediant')
quantity = Field(Number(3,2))
class Ingrediant(Entity):
name = Field(String(30))
...
它有许多不足之处。首先,我不喜欢为ingreditant list创建一个实体,它对域没有任何意义;从抽象中获得乐趣。在
另一个问题是,如果不向模型中添加更多的关系和或字段,这样的查询(比如我可以用这个成分准备哪些项目)会变得非常混乱,而且效率可能很低。在
另一个例子是银行存款单,上面有面额和数量的清单。在
设计这样一个模型的最佳方法是什么?在
solution using sqlalchemy associationproxy 这是来自sqlalchemy文档。在
这是建立复合对象模型的正确方法。我唯一要更改的是IngredientList类的名称。像RecipeEntry或ingreditentquantity这样的方法更合适。把它称为元组只是为了避免命名这样一个事实:一个配方需要一些成分。在
如果大多数代码不想考虑关联的细节,可以使用sqlalchemy associationproxy扩展创建一个代理属性来隐藏细节。在
相关问题 更多 >
编程相关推荐