Django ModuleNotFoundError: Нет модуля с именем 'models'
Я создаю веб-приложение на Django для покупки билетов в кино. Вся логика работы с базой данных находится в приложении 'ticket_handler'. Фактический веб-сайт находится в приложении 'movie_site', и я создаю restful api в приложении 'ticketing_api'.
Когда я пытаюсь импортировать что-то из одного приложения в другое, я получаю ошибку "ModuleNotFound". Вот моя структура каталогов:
Movie_Ticketing_Service
|- movie_server
| |- movie_server
| | |- __init__.py
| | |- asgi.py
| | |- settings.py
| | |- urls.py
| | |- wsgi.py
| |- movie_site
| | |- migrations
| | |- templates
| | |- __init__.py
| | |- admin.py
| | |- apps.py
| | |- forms.py
| | |- models.py
| | |- tests.py
| | |- urls.py
| | |- views.py
| |- ticket_handler
| | |- migrations
| | |- __init__.py
| | |- admin.py
| | |- apps.py
| | |- billing_handler.py
| | |- mail_handler.py
| | |- models.py
| | |- tests.py
| | |- ticket_handler.py
| | |- views.py
| |- tecketing_api
| | |- migrations
| | |- __init__.py
| | |- admin.py
| | |- apps.py
| | |- forms.py
| | |- models.py
| | |- tests.py
| | |- views.py
| |- db.sqlite3
| |- manage.py
|- venv
Вот мои установленные приложения в settings.py:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'movie_site.apps.MovieSiteConfig',
'ticket_handler.apps.TicketHandlerConfig',
'ticketing_api.apps.TicketingApiConfig'
]
Код, который вызывает исключение, - это утверждения импорта в movie_site/views.py:
from django.shortcuts import render, redirect
from ticket_handler.models import Movie, Showing
from ticket_handler.ticket_handler import TicketHandler
from ticket_handler.billing_handler import BillingHandler
from forms import TicketsForm, PurchaseForm, NewUserForm
from django.contrib.auth import login
from django.contrib import messages
это дает мне: ModuleNotFoundError: Нет модуля с именем 'models'
Первоначально я пытался:
from movie_server.ticket_handler.models import Movie, Showing
from movie_server.ticket_handler.ticket_handler import TicketHandler
from movie_server.ticket_handler.billing_handler import BillingHandler
PyCharm нравится это больше, но я получаю: ModuleNotFoundError: Нет модуля с именем 'movie_server.ticket_handler'
Я рву на себе волосы из-за этого, и гугление ничего не прояснило для меня. Дайте мне знать, если вам нужна дополнительная информация!
Из вашей трассировки я заметил, что вы забыли добавить точку перед models:
Change
from models import Showing, Ticket
to
from .models import Showing, Ticket