Django получить модели по имени модели
В Django я знаю, что существует одна и только одна модель с именем foo, но я не знаю приложения, в котором зарегистрирована эта модель! Как я могу получить модель только с именем model_name?
Как показывают ответы на Django: Get model from string? показывают, что для получения модели из строки вам нужна либо app_name строка, либо AppConfig объект model_name.
Однако, вы можете использовать apps.get_app_configs() для итерации над AppConfig экземплярами, так что возможно что-то вроде этого:
from django.apps import apps
for app_conf in apps.get_app_configs():
try:
foo_model = app_conf.get_model('foo')
break # stop as soon as it is found
except LookupError:
# no such model in this application
pass
Обратите внимание, что эта итерация будет включать базовые приложения django, которые находятся в INSTALLED_APPS, такие как admin, auth, contenttypes, sessions, messages и staticfiles.