NDB Singleton模式

问题描述:

我做在AppEngine上的网上商店,并且我创建一个模型,将持有分贝商店的设置,代码看起来是这样的:NDB Singleton模式

class StoreSettings(ndb.Model): 
    name = ndb.StringProperty() 
    homepageTitle = ndb.StringProperty() 
    metaKeywords = ndb.StringProperty() 
    metaDescription = ndb.StringProperty() 
    timezone = ndb.IntegerProperty() 
    currency = ndb.StringProperty() 

是有一个简单的方法可以使StoreSettings类成为单例吗?

谢谢

当您初始化您的设置时,您可以提供一个key_name,那么当您必须检索它时,可以使用get_or_insert方法。如果它不存在,它将创建它,否则它将检索它。

settings_db = StoreSettings.get_or_insert(
    'my_settings', 
    name='yourname' 
    .... 
) 

或者,如果您创建对象时,应用程序启动,那么你只可以通过键值名

settigns_db = StoreSettings.get_by_id('my_settings')

得到它

保持相同的密钥?无论何时在数据存储中推送实体,都需要一个密钥。

如果使用相同的密钥创建第二个对象,它最终将覆盖以前的实体。