4

我发现如何在 Python 中表示“枚举”?关于如何在 python 中创建枚举。我有一个字段ndb.Model,我想接受我的枚举值之一。我是否只是将字段设置为StringProperty?我的枚举是

def enum(**enums):
    return type('Enum', (), enums)

ALPHA = enum(A="A", B="B", C="C", D="D")
4

1 回答 1

8

ProtoRPC Python API完全支持这一点,不值得自己动手。

一个简单的枚举如下所示:

from protorpc import messages 

class Alpha(messages.Enum):
    A = 0
    B = 1
    C = 2
    D = 3

事实证明,ndbmsgprop用于存储protorpc对象的模块,这已记录在案

因此,要存储您的Alpha枚举,您需要执行以下操作:

from google.appengine.ext import ndb
from google.appengine.ext.ndb import msgprop

class Part(ndb.Model):
    alpha = msgprop.EnumProperty(Alpha, required=True)
    ...

编辑:正如hadware所指出的, amsgprop.EnumProperty默认情况下不被索引。如果要对此类属性执行查询,则需要将属性定义为

    alpha = msgprop.EnumProperty(Alpha, required=True, indexed=True)

然后执行查询

ndb.query(Part.alpha == Alpha.B)

或使用 以外的任何值Alpha.B

于 2013-03-21T17:44:30.837 回答