1

我做在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類成爲單例嗎?

謝謝

回答

1

當您初始化您的設置時,您可以提供一個key_name,那麼當您必須檢索它時,可以使用get_or_insert方法。如果它不存在,它將創建它,否則它將檢索它。

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

或者,如果您創建對象時,應用程序啓動,那麼你只可以通過鍵值名

settigns_db = StoreSettings.get_by_id('my_settings')

得到它
0

保持相同的密鑰?無論何時在數據存儲中推送實體,都需要一個密鑰。

如果使用相同的密鑰創建第二個對象,它最終將覆蓋以前的實體。