【问题标题】:Elixir Entity with a list of tuples in it. ex. Cooking Recipe with list of (ingrediant, quantity) tupleElixir 实体,其中包含元组列表。前任。带有(成分,数量)元组列表的烹饪食谱
【发布时间】:2010-11-17 20:30:57
【问题描述】:

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

一个例子是食谱

虽然我可以这样做:

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))
    ...

它有许多缺点。一方面,我不喜欢为成分列表创建一个实体,我对域没有任何意义;从抽象中汲取乐趣。

另一个问题是,如果不向模型添加更多的关系和/或字段,从而使模型变得混乱,那么像我可以用这种成分准备哪些项目这样的查询会变得非常混乱并且可能效率低下。

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

设计这种模型的最佳方法是什么?

【问题讨论】:

    标签: python sqlalchemy python-elixir


    【解决方案1】:

    这是对复合对象建模的正确方法。我唯一要更改的是成分列表类的名称。像 RecipeEntry 或 IngredientQuantity 这样的东西会更合适。将其称为元组只是为了避免需要命名配方需要一定数量的某种成分这一事实。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2012-02-24
        • 1970-01-01
        • 1970-01-01
        • 2020-03-12
        • 2010-11-04
        • 2019-04-27
        • 1970-01-01
        • 2017-09-06
        • 1970-01-01
        相关资源
        最近更新 更多