模型类django.contrib.contenttypes.models.ContentType没有声明一个显式的app_label,并且不在INSTALLED_APPS的应用程序中

6qfn3psc  于 2023-03-09  发布在  Go
关注(0)|答案(4)|浏览(214)

每当我尝试运行makemigrations或runserver时,我会收到以下错误:

RuntimeError: Model class django.contrib.contenttypes.models.ContentType doesn't declare an explicit app_label and       
isn't in an application in `INSTALLED_APPS`.

但是:在INSTALLED_APPS中--

WSGI_APPLICATION = 'mysite.wsgi.application'
import django
django.setup()

# Application definition

INSTALLED_APPS = [
                    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',

    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django_comments',
    'django_comments_xtd',
    'django.contrib.sites',
    'accounts.apps.AccountsConfig',
    'posts.apps.PostsConfig',

    'category',
    #'vote',
    'tinymce',
    'django_wysiwyg',
    'follow',

    'djrichtextfield',
    'ckeditor',
    #'likes',
    'secretballot',

    'hitcount',
    #'pinax',
    'pinax.likes',

    #'pinax',
    #'pinax_theme_bootstrap',
    #'bootstrapform',

    #'voting',
    'actstream',

]

什么原因会导致这种情况?如您所见,Installed_Apps中明确说明了这一点。

uqjltbpv

uqjltbpv1#

如果你在INSTALLED_APPS中注册了你的django应用程序,那么只要确保你选择了正确的settings,也许你忘了设置一些环境变量

vawmfj5a

vawmfj5a2#

我和一个朋友刚刚解决了这个问题,在反复阅读答案并尝试之后,没有一个答案有帮助(至少100%没有),请在您的users\apps.py中尝试:

对我来说:
类用户配置(应用配置):

name = "opercat_api.users"
verbose_name = _("Users")

给你们的:
类用户配置(应用配置):

name = "myapp.users"
verbose_name = _("Users")

然后在您的Myapp\apps.py中:

对我来说:
类异常配置(应用程序配置):

name = 'opercat_api.excepciones'
verbose_name = 'Excepciones'

给你们的:
类我的应用程序名称配置(应用程序配置):

name = 'myproject.myappname'
verbose_name = 'Myappname'

当然,不要忘记检查(settings/base).py中的INSTALLED_APPS
我真的希望这个答案沿着其他答案能帮助你们

qc6wkl3g

qc6wkl3g3#

我也遇到过同样的错误,我花了很长时间才弄明白。这是一个非常不明显的错误,所以在得到这个错误之前所采取的步骤非常重要。
对我来说,它发生在重构我的应用程序时,在将我的User模型更改为从AbstractUser继承而不是从models.Model继承,并将AUTH_USER_MODEL指向我的带有自定义db表的自定义模型之后,每当我试图运行服务器或进行迁移时,这个错误弹出了。它真的让我卡住了好几天。我尝试了几乎所有建议的here或堆栈上我能找到的其他任何地方,除了遗留和DRF问题,因为我使用的是Django 4.1。没有任何帮助,没有任何工作,就像什么都没有一样。我开始考虑从头重写我的应用程序,虽然这将是一个乏味的任务。然而,this answer与一些洞察这个错误和this answer真的让我思考正确。这个错误肯定不是一个过度信息的一个,它可以发生由于许多不同的事情,因此回顾一下在此错误发生之前您所执行的步骤是很有用的。
在我的例子中,这个错误之前有另一个错误。在我将AUTH_USER_MODEL设置为我的自定义模型之后,我得到了django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.

import django 
django.setup()

settings.py中,这就是我得到可怕的...ContentType doesn't declare an explicit app_label...错误的地方。
答案是我犯了一个新手错误,没有在AUTH_USER_MODEL中引用我的定制模型。

AUTH_USER_MODEL = my_app_name.models.User

当然我必须将它导入到settings.py中才能使它工作。然而,据我现在所知,导入发生在这个应用在INSTALLED_APPS中声明之前,这就是Django显示django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet的原因。然后,我没有去想为什么会发生这种情况,而是强行让Django使用

import django 
django.setup()

就为了彻底毁掉它我猜 Django 就像
嘿,伙计,这是一个错误,它不会工作,但好吧,如果你坚持我会接受它,哦,得到你这里的另一个给你,我告诉你,它不会工作哈哈,现在玩得开心。
将我的AUTH_USER_MODEL更改为

AUTH_USER_MODEL = 'my_app_name.User'

正如建议的here,真的为我做了窍门。注意像这样设置,没有models,只有您的应用名称和模型中的类名。
当然,Django马上又开始抱怨了,但这次是关于管理器不可用,因为我还没有把它放在我的自定义模型中=)

TL:DR

我们已经习惯了直接在谷歌上搜索我们得到的最后一个错误,但是这个特定的错误可能会由于各种各样的原因而发生,单独搜索它可能类似于阅读茶叶。坐下来,放松一点,看看这个错误之前的步骤可能会更有用。如果你像我一样,在这个错误之前遇到了Apps aren't loaded yet错误,如果您在settings.py文件中声明了AUTH_USER_MODEL的值,请检查是否引用了该值(如here所示),并检查settings.py中是否没有任何代码,从其他应用程序导入内容(如建议here)。将内容从您的应用导入到此应用的settings.py将不起作用,因为导入发生在您的应用在INSTALLED_APPS中声明之前。强制它使用

import django 
django.setup()

会让Django永远崩溃,让你在堆栈中徘徊,想知道哪里出了问题。
希望它能帮助其他努力学习Django的人!

vql8enpb

vql8enpb4#

我通过将Django降级到1.8来使它工作。我猜1.9有一些问题!

相关问题