路由策略
# -*- coding: utf-8 -*- from django.conf import settings class DatabaseAppsRouter(object): """ A router to control all database operations on models for different databases. In case an app is not set in settings.DATABASE_APPS_MAPPING, the router will fallback to the `default` database. Settings example: DATABASE_APPS_MAPPING = {'app1': 'db1', 'app2': 'db2'} """ def db_for_read(self, model, **hints): """"Point all read operations to the specific database.""" if model._meta.app_label == 'yw_monitor': return 'webmonitor' return None def db_for_write(self, model, **hints): """Point all write operations to the specific database.""" if model._meta.app_label == 'yw_monitor': return 'webmonitor' return None def allow_relation(self, obj1, obj2, **hints): """Allow any relation between apps that use the same database.""" if obj1._meta.app_label == 'yw_monitor' or obj2._meta.app_label == 'yw_monitor': return True return None def allow_migrate(self, db, app_label, model_name=None, **hints): """Make sure that apps only appear in the related database.""" if app_label == 'yw_monitor': return db == 'webmonitor' return None