在python中为谷歌应用引擎创建枚举模型类的最佳方法?

时间:2012-10-02 22:15:14

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

我想创建一个基本枚举类,它本身继承自db.Model。我们的想法是创建几个辅助函数,这些函数可用于枚举类的任何后代。这些属性可能会有一些扩展,但是我可以在基本枚举类中声明几个常见属性(例如,“名称”)。在App Engine中是否有处理枚举模型的标准方法?

1 个答案:

答案 0 :(得分:2)

您似乎必须编写自己的属性类型类(您可以扩展db.IntegerProperty)。 Nick Johnson's ChoiceModel class is an example如何做到这一点:

  This works by mapping each choice to an integer.  The choices must be hashable
  (so that they can be efficiently mapped back to their corresponding index).

  Example usage:

  >>> class ChoiceModel(db.Model):
  ...   a_choice = ChoiceProperty(enumerate(['red', 'green', 'blue']))
  ...   b_choice = ChoiceProperty([(0,None), (1,'alpha'), (4,'beta')])

  You interact with choice properties using the choice values:

  >>> model = ChoiceModel(a_choice='green')
  >>> model.a_choice
  'green'
  >>> model.b_choice == None
  True
  >>> model.b_choice = 'beta'
  >>> model.b_choice
  'beta'

(链接的代码和引用的评论是根据Apache许可证发布的;版权所有2011 Nick Johnson。)