[править]
Начиная с Django 1.7, доступ к settings.INSTALLED_APPS
не рекомендуется: " Ваш код никогда не должен напрямую обращаться к INSTALLED_APPS. Вместо этого используйте django.apps.apps. " - johanno
Итак, благословенный путь:
from django.apps import apps
for app in apps.get_app_configs():
print(app.verbose_name, ":")
for model in app.get_models():
print("\t", model)
Старая версия этого ответа:
Все приложения зарегистрированы в файле settings.py
.
In [1]: from django.conf import settings
In [2]: print(settings.INSTALLED_APPS)
['django.contrib.auth', 'django.contrib.contenttypes',
'django.contrib.sessions', 'django.contrib.sites',
'django.contrib.messages', 'django.contrib.staticfiles',
'django.contrib.admin', 'raven.contrib.django']
Вы можете импортировать каждое приложение и перечислить их атрибуты:
In [3]: from pprint import pprint
In [4]: for app_name in settings.INSTALLED_APPS:
try:
module_ = __import__(app_name)
except ImportError:
pass
map(print, ['=' * 80, "MODULE: "+app_name, '-' * 80])
pprint(module_.__dict__)
Чтобы использовать новую функцию печати вместо оператора print в старом Python, вам может потребоваться ввести from __future__ import print_function
(или просто изменить строку, содержащую вызов print
).