Django Model class doesn't declare без явной причины

Создаю чат по видео с ютуба с вебсокетами и все бы ничего, но при написании самого класса с вебсокетом и импорте модели для соединения, вылезает ошибка о регистрации этой модели. Уже все прошерстил, INSTALLED_APPS проверил, в модели указывать приложение в Meta тоже пробовал, но ничего не помогает.

Проблема именно в самом импорте модели именно в этом файле, т.к в остальных все работало хорошо. Вот логи:

Starting ASGI/Daphne version 4.1.2 development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
Exception in thread django-main-thread:
Traceback (most recent call last):
  File "C:\Python313\Lib\threading.py", line 1041, in _bootstrap_inner
    self.run()
    ~~~~~~~~^^
  File "C:\Python313\Lib\threading.py", line 992, in run
    self._target(*self._args, **self._kwargs)
    ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
  File "C:\Users\mixa2\Desktop\Web\env\Lib\site-packages\daphne\management\commands\runserver.py", line 153, in get_application
    return ASGIStaticFilesHandler(get_default_application())
                                  ~~~~~~~~~~~~~~~~~~~~~~~^^
  File "C:\Users\mixa2\Desktop\Web\env\Lib\site-packages\daphne\management\commands\runserver.py", line 29, in get_default_application
    module = importlib.import_module(path)
  File "C:\Python313\Lib\importlib\__init__.py", line 88, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 1026, in exec_module
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "C:\Users\mixa2\Desktop\Web\webProject\webProject\asgi.py", line 21, in <module>
    from apps.chat import routing
  File "C:\Users\mixa2\Desktop\Web\webProject\apps\chat\routing.py", line 2, in <module>
    from .consumers import ChatroomConsumers
  File "C:\Users\mixa2\Desktop\Web\webProject\apps\chat\consumers.py", line 5, in <module>
    from .models import GroupMessage, ChatGroup
  File "C:\Users\mixa2\Desktop\Web\webProject\apps\chat\models.py", line 5, in <module>
    class ChatGroup(models.Model):
    ...<3 lines>...
            return self.group_name
  File "C:\Users\mixa2\Desktop\Web\env\Lib\site-packages\django\db\models\base.py", line 134, in __new__
    raise RuntimeError(
    ...<3 lines>...
    )
RuntimeError: Model class apps.chat.models.ChatGroup doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.

Вот сам проблемный файл:

import json
from channels.generic.websocket import WebsocketConsumer
from django.shortcuts import get_object_or_404

from .models import GroupMessage, ChatGroup

class ChatroomConsumers(WebsocketConsumer):
    def connect(self):
        self.user = self.scope['user']
        self.chatroom_name = self.scope['url_route']['kwargs']['chatroom_name']
        self.chatroom = get_object_or_404(ChatGroup, group_name=self.chatroom_name)
        self.accept()

    def receive(self, text_data):
        text_data_json = json.loads(text_data)
        body = text_data_json['body']

        message = GroupMessage.objects.create(
            body = body,
            author = self.user,
            group = self.chatroom
        )

Ну и сама модель:

class ChatGroup(models.Model):
    group_name = models.CharField(max_length=128, unique=True)

    def __str__(self):
        return self.group_name

Ну и подключение asgi из setting

ASGI_APPLICATION = 'webProject.asgi.application'

INSTALLED_APPS:

INSTALLED_APPS = [
    "daphne",
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'crispy_forms',
    "crispy_bootstrap5",
    'debug_toolbar',
    "django_htmx",

    'mainMenu.apps.MainMenuConfig',
    'novella.apps.NovellaConfig',
    'authenticate.apps.AuthenticateConfig',
    'quiz.apps.QuizConfig',
    'chat.apps.ChatConfig'
]

Буду очень признателен за наводку)

Все-таки нагуглил решение проблемы. Она заключалась в том, что следовало придерживаться документации по Django и не создавать приложения в отдельной директории, а хранить их на одном уровне с базовой, так сказать

Вот тут подробнее: https://forum.djangoproject.com/t/problem-importing-model-into-consumers-py/34296/4

Вернуться на верх