Django中的路由器只能将一个模型写入数据库?

时间:2013-01-08 11:48:15

标签: django router

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

1 个答案:

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