因此,我閱讀了多個數據庫文檔https://docs.djangoproject.com/en/dev/topics/db/multi-db/,這是非常有幫助的。我得到了如何在setting.py中顯示第二個數據庫以及如何通過命令提示符同步它。但我無法弄清楚的是如何指定如何使某個模型同步/保存在第二個數據庫中。特別是如果我沒有明確說明的話。多個數據庫幫助? (Django)
喜歡用戶。
如果我使用django的用戶類來創建用戶,並且我如何將它保存到第二個數據庫?
因此,我閱讀了多個數據庫文檔https://docs.djangoproject.com/en/dev/topics/db/multi-db/,這是非常有幫助的。我得到了如何在setting.py中顯示第二個數據庫以及如何通過命令提示符同步它。但我無法弄清楚的是如何指定如何使某個模型同步/保存在第二個數據庫中。特別是如果我沒有明確說明的話。多個數據庫幫助? (Django)
喜歡用戶。
如果我使用django的用戶類來創建用戶,並且我如何將它保存到第二個數據庫?
請仔細閱讀您提供的文檔。該文檔的Automatic databse routing部分完全回答您的問題。
用戶數據庫的路由取決於您的實際使用情況和分區策略,沒有一個句子答案。用戶可以在文檔中找到示例,您可以閱讀並簽入本地計算機。
(代碼直接從Django文檔:https://docs.djangoproject.com/en/dev/topics/db/multi-db/#automatic-database-routing
路由器處理在數據庫中的數據應該被獲取或設置
如果你想爲你的應用程序中的路由器(名爲「MYAPP」)
。class MyAppRouter(object):
"""A router to control all database operations on models in
the myapp application"""
def db_for_read(self, model, **hints):
"Point all operations on myapp models to 'other'"
if model._meta.app_label == 'myapp':
return 'other'
return None
def db_for_write(self, model, **hints):
"Point all operations on myapp models to 'other'"
if model._meta.app_label == 'myapp':
return 'other'
return None
def allow_relation(self, obj1, obj2, **hints):
"Allow any relation if a model in myapp is involved"
if obj1._meta.app_label == 'myapp' or obj2._meta.app_label == 'myapp':
return True
return None
def allow_syncdb(self, db, model):
"Make sure the myapp app only appears on the 'other' db"
if db == 'other':
return model._meta.app_label == 'myapp'
elif model._meta.app_label == 'myapp':
return False
return None
通過在settings.py中添加下一行,將在其自己的數據庫(名爲「其他」)中創建/保存/處理所有'myapp'應用程序數據,其餘所有應用程序使用默認數據庫
DATABASE_ROUTERS = ['path.to.MyAppRouter']
路由器可以保存在任何你想要的地方。只需修復settings.DATABASE_ROUTERS的路徑即可。
我想我只有一個問題。我在哪裏放數據庫路由類?在models.py中? – city 2012-04-18 16:15:42
@ user1316042它是通過'DATABASE_ROUTERS'中定義的路徑導入的,路徑只要可以找到就可以在任何地方。例如,你可以把它放在settings.py中,並將'DATABASE_ROUTERS'設置爲'''settings.MyRouter']' – okm 2012-04-18 16:36:34
Hmmph。我遇到了問題,因爲用戶不能在我的模型中定義。因此我無法給它一個verbose_name,我正在使用它來路由模型。現在我將所有模型的verbose_name設置爲'cash',但是爲什麼我會嘗試使用路由器,因爲我無法/沒有定義用戶,我必須使用'if model._meta.verbose_name!='現金':'當我得到allow_syncdb時,這讓我陷入了一些問題。 – city 2012-04-18 18:04:56