Как настроить две базы данных с разными таблицами в одном приложении 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? Если это невозможно, пожалуйста, предложите мне альтернативное решение для решения этой проблемы

Вернуться на верх