2012-10-02 50 views
0

我想創建一個基本的枚舉類,它本身從db.Model繼承。這個想法是創建幾個幫助函數,這些函數可用於枚舉類的任何後代。這些屬性可能在一定程度上延伸,但是我可以在基類枚舉類(例如「Name」)中聲明幾個常見屬性。是否有一種處理App Engine枚舉模型的標準方式?在python中爲Google應用程序引擎創建枚舉模型類的最佳方式是什麼?

+0

不知道這是你在找什麼,但ProtoRPC的NDB的消息屬性包括EnumProperty:https://developers.google.com/appengine/docs/python/ndb/properties#msgprop – Sologoub

+0

我在查找解決方案時看到了這一點;不幸的是,這不是我所需要的。我需要一個完整的枚舉類,我可以編寫專門的方法。 – Trevor

+0

您可能會覆蓋新的領域;枚舉不是那麼受歡迎。可能值得你自己解決,並在你的解決方案中回到這裏。 –

回答

2

看來,你將不得不編寫自己的屬性類類(你可以擴展db.IntegerProperty)。如何做到這一點Nick Johnson's ChoiceModel class is an example

This works by mapping each choice to an integer. The choices must be hashable 
    (so that they can be efficiently mapped back to their corresponding index). 

    Example usage: 

    >>> class ChoiceModel(db.Model): 
    ... a_choice = ChoiceProperty(enumerate(['red', 'green', 'blue'])) 
    ... b_choice = ChoiceProperty([(0,None), (1,'alpha'), (4,'beta')]) 

    You interact with choice properties using the choice values: 

    >>> model = ChoiceModel(a_choice='green') 
    >>> model.a_choice 
    'green' 
    >>> model.b_choice == None 
    True 
    >>> model.b_choice = 'beta' 
    >>> model.b_choice 
    'beta' 

(鏈接的代碼,並引述的評論是在Apache許可證下發布;版權所有2011尼克·約翰遜。)

+0

歡迎來到堆棧溢出!請在答案中展開鏈接的相關部分。如果鏈接中斷,這個答案也是如此,這意味着它將來無法幫助任何人。否則,您的答案可能會被刪除。 –

相關問題