Как создать вторичную базу данных с помощью Django

dbrouter.py

class DbRouter(object):
    mhris = [HrUserMstr]
    profocus_db = [VendorEntry, ApVendorMt, ApVendorDt, ApVendorCertificateDt]
    apps_ppl = []

    def db_for_read(self, model, **hints):
        if model in self.profocus_db:
            return 'PROFOCUS_DB'
        elif model in self.apps_ppl:
            return 'APPS_PPPL'
        elif model in self.mhris:
            return 'MHRIS'
        else:
            return 'default'


    def db_for_write(self, model, **hints):
        if model in self.profocus_db:
            return 'PROFOCUS_DB'
        elif model in self.apps_ppl:
            return 'APPS_PPPL' 
        elif model in self.mhris:
            return 'MHRIS'
        else:
            return 'default'

    def allow_migrate(self, db, app_label, model_name=None, **hints):
        if model_name in self.profocus_db:
            return 'PROFOCUS_DB'
        elif model_name in self.apps_ppl:
            return 'APPS_PPPL' 
        elif model_name in self.mhris:
            return 'MHRIS'
        else:
            return 'default' 

models.py

class ApVendorDt(models.Model):
    certificate = models.ForeignKey(ApVendorCertificateDt, on_delete=models.CASCADE)
    vendor_code = models.CharField(max_length=30, default='')
    vendor_doc = models.FileField(upload_to='vendor_doc/')
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.vendor_id

    class Meta:
        db_table = 'APVENDOR_DT'

Функции db_for_write и db_for_read работают нормально, но allow_migrate не работает. Я пытаюсь создать новую таблицу, используя модель django, она создает таблицу в базе данных по умолчанию, но я хочу создать таблицу только в profocus_db, которая является моей вторичной базой данных.

django 4.0.1

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