1

我的 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数据库。

4

1 回答 1

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']

于 2013-01-09T02:27:23.837 回答