2013-08-18 58 views
3

我的代碼有權訪問3個數據庫。 syncdb必須在兩個數據庫中創建所有模型表。我不確定如何做到這一點。以下不起作用。Django多個數據庫:選擇數據庫在哪裏syncdb創建表

DATABASES = { 
    'default': {}, # empty. default is required 
    'db_1': { # want tables created in this 
     ... 
    }, 
    'db_2': { # want tables created in this 
     ... 
    }, 
    'other': { # do NOT want tables created in this 
     ... 
    }, 
} 

路由器:(單獨的路由器處理AUTH表)

import random 
class OtherRouter(object): 
    def db_for_read(self, model, **hints): 
     return random.choice(['db_1', 'db_2']) 

    def db_for_write(self, model, **hints): 
     return "db_1" 

    def allow_relation(self, obj1, obj2, **hints): 
     return True 

    def allow_syncdb(self, db, model): 
     db_list = ('db_1', 'db_2') 
     if db in db_list: 
      return True 
     return None 

回答

3
得到

它。 Syncdb必須使用db參數運行。另外,可能(不確定是否重要)在其他情況下allow_syncdb應該返回False,而不是None。

syncdb --database='db_1' 
syncdb --database='db_1'