包含元组列表的Elixir实体。例如:烹饪配方(含配料,数量)表

2024-05-13 00:05:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图构建一个长生不老药模型,在这个模型中我有一个元组列表(可变大小)的类。在

一个例子就是配方

虽然我可以这样做:

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创建一个实体,它对域没有任何意义;从抽象中获得乐趣。在

另一个问题是,如果不向模型中添加更多的关系和或字段,这样的查询(比如我可以用这个成分准备哪些项目)会变得非常混乱,而且效率可能很低。在

另一个例子是银行存款单,上面有面额和数量的清单。在

设计这样一个模型的最佳方法是什么?在


Tags: 模型field列表time配方recipeclass例子
2条回答

solution using sqlalchemy associationproxy 这是来自sqlalchemy文档。在

这是建立复合对象模型的正确方法。我唯一要更改的是IngredientList类的名称。像RecipeEntry或ingreditentquantity这样的方法更合适。把它称为元组只是为了避免命名这样一个事实:一个配方需要一些成分。在

如果大多数代码不想考虑关联的细节,可以使用sqlalchemy associationproxy扩展创建一个代理属性来隐藏细节。在

相关问题 更多 >