Я скопировал несколько manage.py
строк на мой __init__.py
, и все мои views
и models
можно импортировать из любого места без необходимости python manage.py shell
:
import os
import django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')
django.setup()
Таким образом, я могу импортироватьмои подмодули в __init__.py
(далее):
import glob
modules = glob.glob(os.path.join(os.path.dirname(__file__), '*.py'))
__all__ = [os.path.basename(f)[:-3] for f in modules
if os.path.isfile(f) and not f.endswith('__init__.py')]
from . import *
Таким образом, я могу сделать это из любого каталога:
import myproject as mp
mp.models.MyModel.objects.get(field_name='value')
Это удобно при импорте данных или переносе данных изиз каталога проекта fixtures.
Что-то не так с этим?Если нет, то почему Django не делает это по умолчанию, когда вы python manage.py startproject
?