Я пытаюсь определить некоторые модели Django вне папки проекта Django (я просто использую возможности Django ORM без функциональности веб-приложения) и импортировать их в models.py приложения в проекте Django.
Я знаю, что models.py можно «разделить», создав пакет моделей, содержащий несколько модулей, определяющих модели и импортирующих в __init__.py
, поэтому я подумал, что это будет работать точно так же.
Каталогструктура выглядит следующим образом:
- root
- tasks
- taskA
- models.py
- taskB
- models.py
- orm
- apps
- app1
- models.py
- base_models.py
- apps.py
- app2
- models.py
- base_models.py
- apps.py
- manage.py
- settings.py
В основном приложения Django классифицируют тип модели (абстрактная базовая модель определена в appX.base_models.py), а задачи определяют и используют свои собственные версии / подклассыразличные типы моделей, которые затем импортируются в приложение django models.py для управления Django
, например:
в root.orm.apps.app1.models.py
:
from root.tasks.taskA.models import ModelType1A
from root.tasks.taskB.models import ModelType1B
Тем не менее, я пытаюсь запустить задачу (которая вызывает django.setup ()) или make.py makemigrations, я получаю:
RuntimeError: Класс модели root.tasks.taskA.models.ModelType1A не объявляет явную метку app_label и не находится в приложении в INSTALLED_APPS
И да, приложения включены в INSTALLED_APPS (это импорт из root.orm.apps.app1.models.pyчто вызывает ошибку, поэтому Django обнаруживает приложение и пытается получить его модели, но, похоже, не распознает их, когда они импортируются из внешнего проекта или чего-то еще)
Есть ли способ сделать эторабота?
ура