RuntimeWarning: доступ к базе данных во время инициализации приложения не рекомендуется. Чтобы устранить это предупреждение, избегайте выполнения запросов в AppConfig.ready() или при импорте модулей вашего приложения.
Из того, что я искал до сих пор, мой файл apps.py вызывает это из-за операции, которую он выполняет с базой данных:
Код: Выделить всё
from django.apps import AppConfig
class TenantsConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'tenants'
def ready(self):
self.load_additional_databases()
def load_additional_databases(self):
from django.conf import settings
from .models import DatabaseConfig
for config in DatabaseConfig.objects.all():
if config.name not in settings.DATABASES:
db_settings = settings.DATABASES['default'].copy()
db_settings.update({
'ENGINE': config.engine,
'NAME': config.database_name,
'USER': config.user,
'PASSWORD': config.password,
'HOST': config.host,
'PORT': config.port,
})
settings.DATABASES[config.name] = db_settings
Код: Выделить всё
def db_config(**kwargs):
from django.conf import settings
from .models import DatabaseConfig
for config in DatabaseConfig.objects.all():
if config.name not in settings.DATABASES:
db_settings = settings.DATABASES['default'].copy()
db_settings.update({
'ENGINE': config.engine,
'NAME': config.database_name,
'USER': config.user,
'PASSWORD': config.password,
'HOST': config.host,
'PORT': config.port,
})
settings.DATABASES[config.name] = db_settings
class TenantsConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'tenants'
def ready(self):
connection_created.connect(db_config)
Подробнее здесь: https://stackoverflow.com/questions/791 ... discourage
Мобильная версия