我的models.py中有4个模型。我正在使用多个数据库。我想只将模型写入我添加的另一个数据库。我有来自Django文档的默认路由器:
def db_for_write(self, model, **hints):
"""
Attempts to write fileupload models go to galaxy.
"""
if model._meta.app_label == 'fileupload': #fileupload=app_name
return 'galaxy' #database=galaxy
return None
我的型号名称是GalaxyUser。如何修改此函数,以便在执行./manage.py syncdb --database=galaxy
时,只将模型GalaxyUser
写入数据库。
答案 0 :(得分:1)
您需要定义allow_syncdb
方法
class GalaxyRouter(object):
def allow_syncdb(self, db, model):
if db == 'galaxy':
return model._meta.app_label == 'fileupload'
if model._meta.app_label == 'fileupload':
return db == 'galaxy'
return None
确保路由器与模型位于不同的文件中(例如fileupload/routers.py
),并将其安装在settings.py
文件中,如下所示:DATABASE_ROUTERS = ['fileupload.routers.GalaxyRouter']