gpt4 book ai didi

google-app-engine - 将枚举传递给 python 中的 ndb.Model 字段

转载 作者:太空宇宙 更新时间:2023-11-03 15:32:05 24 4
gpt4 key购买 nike

我找到了 How can I represent an 'Enum' in Python?了解如何在 python 中创建枚举。我的 ndb.Model 中有一个字段,我想接受我的枚举值之一。我是否只是将该字段设置为 StringProperty?我的枚举是

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

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

最佳答案

这在 ProtoRPC Python API 中得到完全支持而且不值得自己动手。

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

from protorpc import messages 

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

事实证明,ndb 有用于存储 protorpc 对象的 msgprop 模块,这是 documented .

因此,要存储您的 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指出的那样, msgprop.EnumProperty 默认没有索引。如果要对此类属性执行查询,则需要将属性定义为

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

然后执行查询

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

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

关于google-app-engine - 将枚举传递给 python 中的 ndb.Model 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15553460/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com