Как настроить две базы данных с разными таблицами в одном приложении Django?
settings.py
DATABASE_ROUTERS = ["mysite.router.CheckerRouter"]
DATABASES = {
"default": {
"ENGINE": "sql_server.pyodbc",
"NAME": "A",
"USER": "user",
"PASSWORD": "dummypassword",
"HOST": "server",
"PORT": "1433",
"OPTIONS": {
"driver": "ODBC Driver 17 for SQL Server",
},
},
"marketing": {
"ENGINE": "sql_server.pyodbc",
"NAME": "B",
"USER": "user",
"PASSWORD": "dummypassword",
"HOST": "server",
"PORT": "1433",
"OPTIONS": {
"driver": "ODBC Driver 17 for SQL Server",
},
},
}
models.py
class table1(models.Model): ## Default database table
ID = models.CharField(
db_column="Identifier", max_length=200, blank=True, null=True, db_index=True
)
var1 = models.CharField(
db_column="Type", max_length=200, blank=True, null=True, db_index=True
)
class Meta:
db_table = "Table 1"
class table2(models.Model): ## Marketing database table
ID = models.CharField(
db_column="Identifier", max_length=200, blank=True, null=True, db_index=True
)
marketer = models.CharField(
db_column="Type", max_length=200, blank=True, null=True, db_index=True
)
class Meta:
db_table = "Table 2"
app_label = "marketing_label"
router.py
class CheckerRouter:
def db_for_read(self, model, **hints):
if model._meta.app_label == "marketing_label":
return "marketing"
return "default"
def db_for_write(self, model, **hints):
if model._meta.app_label == "marketing_label":
return "marketing"
return "default"
def allow_relation(self, obj1, obj2, **hints):
if obj1._meta.app_label == "marketing_label" or obj2._meta.app_label == "marketing_label":
return True
return True
def allow_migrate(self, db, app_label, model_name=None, **hints):
if app_label == "marketing_label":
return db == "marketing"
return None
При выполнении миграции приложение вообще не обнаруживает таблицы базы данных маркетинга. Обнаруживаются только изменения в базе данных по умолчанию. Как я могу мигрировать две базы данных с разными таблицами, используя один файл Django models.py? Если это невозможно, пожалуйста, предложите мне альтернативное решение для решения этой проблемы