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