У меня есть сайт Django, который использует две базы данных. Модели для вторичной базы данных были добавлены в тот же models.py , но с мета-классом для каждой из них для обработки маршрутизации базы данных.
class Meta:
app_label = 'database_name'
managed = False
db_table = 'table_name'
Теперь я пытаюсьчтобы получить модель, используя только строку, однако каждый пример, который я видел / пробовал, кажется, требует использования app_label.
apps.get_model('scripts', 'model_example')
Использование имени приложения реального приложения, чтобы все было в результате вLookupError: App 'scripts' doesn't have a 'model_example' model.
apps.get_model('database_name', 'model_example')
Использование app_label, которое фактические модели имеют в своем метаклассе, приводит к LookupError: No installed app with label 'database_name'.
Я также не могу понять, какчтобы решить эту проблему, используя AppConfig или ContentType, как упоминалось в некоторых других публикациях.
Для ясности: у меня нет приложения с database_name, оно используется только для маршрутизации. Я ищу способ извлечения модели с помощью строки, функции get_model (), кажется, требуют реально существующего приложения.
Могу ли я получить модель или мне нужны структурные изменения? и если да, что изменится?
РЕДАКТИРОВАТЬ:
Я могу сделать это, используя globals()['model_example']
, но я много раз читал, что следует избегать использования глобалов как можно больше. Из-за этого я все еще ищу другое решение.