2013-03-21 77 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