Лучше всего (или хотя бы одним из распространенных способов) создать проект полного стека на основе Django 3, в котором используются приложения c Django (вместо автономных Django приложений) с указанием проекта. структура, подобная этой (см., например, здесь ):
fullstack_project/
frontend/
... # frontend stuff goes into here
backend/ # Django project name
apps/
app1/
apps.py
logic.py
models.py
...
app2/
apps.py
logic.py
models.py
...
wsgi.py
...
manage.py
Приложения (здесь: app1
) интегрированы в наиболее базовую форму c (без ruls, views, et c.) через fullstack_project/backend/apps/app1/apps.py
class App1Config(AppConfig):
name = 'backend.apps.app1'
и fullstack_project/backend/settings.py
INSTALLED_APPS = [
...
'backend.apps.app1.apps.App1Config',
'backend.apps.app2.apps.App2Config',
]
Использование logi c одного приложения (например, app2/logic.py
) в другом приложении ( например, app1/logic.py
) работает просто отлично (например, через from backend.apps.app2.logic import ...
в app1/logic.py
).
Однако, если я пытаюсь получить доступ к моделям app1 в логи c из app2, я получаю django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.
. Я мог бы реализовать оболочку базы данных для приложения, чтобы разрешить доступ к базе данных между приложениями. Тем не менее, в любом случае, приложения являются кросс-проектными, но я бы хотел избежать этого и сделать доступ проще. Как я могу исправить эту проблему?