Неправильная метка model._meta.app_label (из другого приложения) в маршрутизаторе базы данных Django

У меня есть две различные базы данных SQL и три приложения в моем проекте django.

Приложения называются PROD, TEST и common.

Я пытаюсь направить все, что приходит по url из PROD в models.py из PROD и базы данных1, и все, что приходит по url из TEST в models.py из TEST и базы данных2.

TEST
   -- models.py
PROD
   -- models.py
common

Все работало нормально, пока я не ввел 'common' (после клонирования проекта в другую папку) и я не знаю почему.

settings.py:

   DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'cfg_db_ic2_net_dev_test',
        'USER': '',
        'PASSWORD': '',
        'HOST': '',
        'PORT': '',
    },
    'proddb': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'cfg_db_ic2_net_dev_prod',
        'USER': '',
        'PASSWORD': '',
        'HOST': '',
        'PORT': '',
    }
} 
DATABASE_ROUTERS = ['PROD.dbRouter.ProdDBRouter']

PROD/dbRouter.py:

 
    def db_for_read(self, model, **hints):
        "Point all operations on prod models to 'proddb'"
        from django.conf import settings
        print(model._meta.app_label)
        if model._meta.app_label == 'PROD':
            return 'proddb'
        return None

...

PROD/views.py:

def hosts(request):
    print("I did this")
    return render(request=request, template_name="common/hosts.html", context={"hosts": NetDefined.objects.all, "landscape": landscape})

Модели models.py для каждого TEST и PROD практически идентичны.

Проблема в том, что шаблон hosts.html заполняется данными из базы данных по умолчанию, а не из базы данных proddb.

Причина этого в том, что DBRouter не распознает model._meta.app_label модели, он говорит, что это "TEST". Несмотря на то, что url определенно маршрутизируется правильно, печатается "I did this".

Это произошло только после переустановки проекта и внедрения третьего приложения.

Итак, мой вопрос: почему Django не распознает, что используются представления и модели из "PROD" и вместо этого предоставляет маршрутизатору неправильную метку app_label?

Спасибо за помощь!

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