Избегайте добавления имени приложения в имя таблицы в django

Я реализовал маршрутизацию баз данных в django. Я создаю таблицы в двух разных базах данных, используя маршрутизацию базы данных в django. Проблема в том, что имя приложения добавляется в имя таблицы базы данных. Я использую базу данных prosgreSql.

Я пытался указать db_table в качестве значения в классе Meta, но у меня ничего не получается. Я ожидаю только имя таблицы в базе данных. Я использую базу данных prosgreSql

App1 - модель

from django.db import models

# Create your models here.

class sample_table1(models.Model):
    id = models.IntegerField
    col1 = models.CharField(max_length=100)
    col2 = models.CharField(max_length=50, null=True)
    col3 = models.CharField(max_length=200, null=True)

    class meta:
        db_table = 'Sample_DB1'
        db_router = 'router.MyDBRouter.MyDB_Router'
        app_label = 'app1'
        

    def __str__(self):
        return f"{self.id}, {self.col1}"


class sample_table2(models.Model):
    id = models.IntegerField
    col1 = models.CharField(max_length=100)

    class meta:
        db_table = 'Sample_DB2'
        db_router = 'router.MyDBRouter.MyDB_Router'
        app_label = 'app1'
        

    def __str__(self):
        return f"{self.id}, {self.col1}"


class sample_table3(models.Model):
    id = models.IntegerField
    col1 = models.CharField(max_length=100)

    class meta:
        db_table = 'Sample_DB3'
        db_router = 'router.MyDBRouter.MyDB_Router'
        app_label = 'app1'
        

    def __str__(self):
        return f"{self.id}, {self.col1}"

app2 - модель

from django.db import models

# Create your models here.

class tbl2(models.Model):
    id = models.IntegerField
    col22 = models.CharField(max_length=100)
    col33 = models.CharField(max_length=10, null=True)

    class meta:
        db_table = 'Sample_tbl2'
        db_router = 'router.MyDBRouter.MyDB_Router'
        app_label = 'app2'
        

    def __str__(self):
        return f"{self.id}, {self.col1}"

Router

class MyDB_Router:

def db_for_read(self, model, **hints): 

    if model._meta.app_label == 'app1': 

        return 'database1' 

    elif model._meta.app_label == 'app2': 

        return 'database2' 

    return None 



def db_for_write(self, model, **hints): 

    if model._meta.app_label == 'app1': 

        return 'database1' 

    elif model._meta.app_label == 'app2': 

        return 'database2' 

    return None 



def allow_relation(self, obj1, obj2, **hints): 

    # Allow relations if both objects are from the same app 

    return obj1._meta.app_label == obj2._meta.app_label 



def allow_migrate(self, db, app_label, model_name=None, **hints): 

    # Allow models in apps 'app1' and 'app2' to be migrated to database1 and database2 respectively 

    if app_label in ['app1', 'app2']: 

        return db == 'database1' if app_label == 'app1' else db == 'database2' 

    return None 

файл settings.py

DATABASES = {
'default': {}, 

'database1': { 
    'ENGINE': 'django.db.backends.postgresql', 
    'NAME': 'database1_name', 
    'USER': 'postgres', 
    'PASSWORD': 'abc123.', 
    'HOST': 'localhost', 
    'PORT': '5432', 
}, 

'database2': { 
    'ENGINE': 'django.db.backends.postgresql', 
    'NAME': 'database2_name', 
    'USER': 'postgres', 
    'PASSWORD': 'abc123.', 
    'HOST': 'localhost', 
    'PORT': '5432', 
},

}

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