В Django
я знаю, что есть одна и только одна модель с именем foo
, но я не знаю, в каком приложении зарегистрирована эта модель! Как я могу получить модель только с model_name
?
Как показывают ответы на Джанго: Получить модель из строки?, вам нужна либо строка 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
.