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
.