Kat*_*lon 3 google-app-engine python-2.7 google-cloud-datastore
我发现如何在Python中表示"Enum"?如何在python中创建枚举.我有一个字段ndb.Model,我想接受我的一个枚举值.我只是将字段设置为StringProperty?我的枚举是
def enum(**enums):
return type('Enum', (), enums)
ALPHA = enum(A="A", B="B", C="C", D="D")
Run Code Online (Sandbox Code Playgroud)
这在ProtoRPC Python API中完全支持,并且不值得自己动手.
一个简单的枚举将如下所示:
from protorpc import messages
class Alpha(messages.Enum):
A = 0
B = 1
C = 2
D = 3
Run Code Online (Sandbox Code Playgroud)
事实证明,ndb有msgprop用于存储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)
...
Run Code Online (Sandbox Code Playgroud)
编辑:正如hadware所指出的那样msgprop.EnumProperty,默认情况下a 不会编入索引.如果要对这些属性执行查询,则需要将属性定义为
alpha = msgprop.EnumProperty(Alpha, required=True, indexed=True)
Run Code Online (Sandbox Code Playgroud)
然后执行查询
ndb.query(Part.alpha == Alpha.B)
Run Code Online (Sandbox Code Playgroud)
或使用除以外的任何值Alpha.B.
| 归档时间: |
|
| 查看次数: |
1623 次 |
| 最近记录: |