2013-03-21 81 views

回答

7

这在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以外的任何值。

+0

我还没有测试过。但它似乎是正确的。谢谢! – 2013-03-21 17:53:49

+1

有可能在msgprop和enum上查询? – hadware 2014-07-21 21:03:05

+0

您是否试过在msgprop上查询?我猜想它就像一个整数一样工作,你可以使用'ndb.query(Part.alpha == Alpha.B)'。你应该启动一个开发服务器并亲自查看。 – bossylobster 2014-07-22 00:28:12