Импорт модели приложения с несколькими приложениями Django Ошибка ModuleNotFoundError: Нет модуля с именем 'apps'

У меня проблема с импортом модели из другого приложения в том же проекте Django.

Мои файлы структурированы следующим образом:

/project
    /apps  
       __init__.py
       /app1
          __init__.py
          models.py
          ...
       /non_app_dir
          __init__.py
          work.py
       ...
   /core
       __init.py
       settings.py
       urls.py
       wsgi.py
       ...  
manage.py

В моем файле settings.py у меня есть следующее:

INSTALLED_APPS = [
    ...
    'apps.app1',
    'apps.non_app_dir',
    ...
]

Ок, итак, в моем work.py (из не_app_dir) я пытаюсь импортировать модель из models.py (из app1), как показано ниже:

from apps.app1.models import MyModel

def testModel():
    
    test = MyModel.objects.all()
    print(test)

но я получаю следующую ошибку

ModuleNotFoundError: No module named 'apps'

Есть ли решения для этого?

Create two seperate apps using following structure.

/project

   /app1
          __init__.py
          models.py
    
   /non_app_dir
          __init__.py
          work.py
  
   /core
       __init.py
       settings.py
       urls.py
       wsgi.py
       
    manage.py

Inside, core urls.py include urls,

    path('path1/', include('app1.urls'),
    path('path2/', include('non_app_dir.urls')

В вашем app1/apps.py обязательно добавьте name = 'apps.app1' в класс app config. Например:

from django.apps import AppConfig

class App1Config(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'apps.app1'
 
Вернуться на верх