それ自体がdb.Modelから継承する基本列挙型クラスを作成したいと思います。アイデアは、enum クラスの任意の子孫で使用できるいくつかのヘルパー関数を作成することです。プロパティは非常に拡張される可能性がありますが、基本列挙型クラスで宣言できる共通のプロパティがいくつかあります (たとえば、'Name')。App Engine で列挙モデルを処理する標準的な方法はありますか?
質問する
900 次
1 に答える
2
独自のプロパティ タイプ クラスを作成する必要があるようです (おそらく db.IntegerProperty を拡張できます)。Nick Johnson の ChoiceModel クラスは、その方法の例です。
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 ライセンスの下でリリースされています; copyright 2011 Nick Johnson.)
于 2013-02-05T01:05:51.250 に答える