2

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

When making migrations, the app is not detecting the marketing database tables at all. Only the default database changes are detected. How can I migrate two databases with different tables using one Django models.py file? If it's not possible please suggest me an alternate solution to approach this problem

0 Answers0