在appengine中构建模型类(因为元组不可用)

时间:2014-06-05 00:25:42

标签: python google-app-engine database-design schema

我正在设计用于生产管理的软件。我的应用允许我的用户执行以下操作:

  1. 用户可以创建"计划"。时间表指定在特定日期需要准备什么类型的蔬菜产品。
  2. 每种蔬菜具有不同的繁殖,移植和收获期。
  3. 我的软件向后工作,并确定在哪个日期等需要完成的工作等。
  4. 我在设计Schedule的数据结构时遇到了麻烦。

    我现在有以下内容:

    class Produce(db.Model):
      crop = db.StringProperty(required=True)
      duration_sow = db.IntegerProperty()
      duration_transplant = db.IntegerProperty()
      duration_storage = db.IntegerProperty()
    

    并且计划在JSON中看起来像这样:

    a_schedule = { 
      "crops": [ {"produce": Key(123), "quantity", 15}, {"produce": Key(234), "quantity", 16} ], 
      "created_by": ....
    }
    

    由于Appengine数据存储区不支持元组,因此我不确定如何存储" crop"我的模型中的属性。

    选项1

    我考虑过使用两个阵列,

    crops_key = [ Key(123), Key(234), .. ]
    quantity = [ 15, 16, ... ]
    

    但是删除和修改可能会有点棘手。这是有效的,但我经常遇到这种模式,我只想看看那里的专家有什么建议。

    如果有所作为,我正在使用python。

1 个答案:

答案 0 :(得分:0)

db中有一个ListProperty。

https://developers.google.com/appengine/docs/python/datastore/typesandpropertyclasses#ListProperty

允许您存储多个键。 我在一个基于db的旧项目中同步维护两个列表属性。

我注意到您正在使用db,如果您没有重要的代码库,请考虑转移到ndb。 ndb有更好的存储这些数据的模型。阅读ndb中的StructuredProperties。 https://developers.google.com/appengine/docs/python/ndb/properties