Sam B.
Sam B.

Reputation: 3043

Django contrib comments: RuntimeError: Model class django_comments.models... application in INSTALLED_APPS

I'm trying to add django-contrib-comments Version: 1.9.2 and Django Version: 3.1.2 I've added it to settings INSTALLED_APPS

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    ...

    #imports
    'comments_moderation',

]

it throws this error

File "/home/sam/code/kpsga/lamusoftware/blog/models.py", line 5, in <module>
    from django_comments.moderation import moderator
File "/home/sam/code/envs/kpsga/lib/python3.8/site-packages/django_comments/moderation.py", line 369, in <module>
    moderator = Moderator()
File "/home/sam/code/envs/kpsga/lib/python3.8/site-packages/django_comments/moderation.py", line 294, in __init__
    self.connect()
File "/home/sam/code/envs/kpsga/lib/python3.8/site-packages/django_comments/moderation.py", line 302, in connect
    signals.comment_will_be_posted.connect(self.pre_save_moderation, sender=django_comments.get_model())
File "/home/sam/code/envs/kpsga/lib/python3.8/site-packages/django_comments/__init__.py", line 49, in get_model
    from django_comments.models import Comment
File "/home/sam/code/envs/kpsga/lib/python3.8/site-packages/django_comments/models.py", line 12, in <module>
    class Comment(CommentAbstractModel):
File "/home/sam/code/envs/kpsga/lib/python3.8/site-packages/django/db/models/base.py", line 113, in __new__
    raise RuntimeError(
RuntimeError: Model class django_comments.models.Comment doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.

which suggests it needs to be added to INSTALLED_APPS but it's already added.

Upvotes: 1

Views: 67

Answers (1)

willeM_ Van Onsem
willeM_ Van Onsem

Reputation: 477854

This is caused because one of your models is importing Comment from the django_comments application, but you did not add this app to the INSTALLED_APPS. You thus should rewrite the INSTALLED_APPS to:

# settings.py

# …

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    
    # …
    'django_comments',
    # …
    
    # imports
    'comments_moderation',
]

Upvotes: 1

Related Questions