Django: получить модель из строки без app_label - PullRequest
0 голосов
/ 04 октября 2019

У меня есть сайт 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'], но я много раз читал, что следует избегать использования глобалов как можно больше. Из-за этого я все еще ищу другое решение.

...