【问题标题】:Relating one model to multiple models based on field基于字段将一个模型与多个模型相关联
【发布时间】:2015-04-19 03:43:04
【问题描述】:

以下是模型的简要说明:

  • 模型 A 代表一件设备,具有名称和状态
  • 模型 B 代表了许多模型 A 的特定状态
  • 模型 B 应该与许多模型 A 相关,但仅适用于模型 A 的特定状态

是否可以在数据存储区中建模这样的东西?我需要模型 A 的状态独立于任何模型 B,但是当我观察模型 B 时,我需要知道模型 B 所代表的模型 A 的状态应该是什么。

我目前实现这一点的方法是使模型 B 具有代表不同模型 A 的字符串字段,字段名称是模型 A 的名称,字段的值是模型 A 的状态进入。

这可行,但是它是完全静态的,并且需要在模型 A 的数量发生变化时手动将字段添加到模型 B 中。我正在寻找一种动态方法来解决这个问题。

我希望这不会太令人困惑,如果需要,请要求更多说明。

【问题讨论】:

    标签: database google-app-engine google-cloud-datastore non-relational-database


    【解决方案1】:

    您可以为此使用参考属性:

    class A(db.Model):
        state = db.ReferenceProperty(collection_name="equipment")
    

    在创建 A 时,将 state 属性设置为对应的 B 实体。

    这还会在B 实体中创建一个名为equipment 的属性,该属性可用于获取引用特定B 的所有A 实体。

    假设您在变量broken 中有一个用于损坏设备的B 实体。这样就可以把所有坏掉的装备都搞定了

    broken.equipment.get()
    

    ndb 也提供此功能,但细节略有不同,您需要查看文档。

    【讨论】:

    • 谢谢,正是我想要的。
    猜你喜欢
    • 2012-12-24
    • 1970-01-01
    • 2022-10-16
    • 2010-10-15
    • 1970-01-01
    • 2014-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多