我真是一筹莫及。经过十几个小时的故障排除,可能更多,我以为我终于可以做生意了,但接着我发现:

Model class django.contrib.contenttypes.models.ContentType doesn't declare an explicit app_label 

网上关于这方面的信息太少了,没有解决方案可以解决我的问题。任何建议都将不胜感激。

我使用的是Python 3.4和Django 1.10。

从我的settings.py:

INSTALLED_APPS = [
    'DeleteNote.apps.DeletenoteConfig',
    'LibrarySync.apps.LibrarysyncConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

我的app .py文件是这样的:

from django.apps import AppConfig


class DeletenoteConfig(AppConfig):
    name = 'DeleteNote'

and

from django.apps import AppConfig


class LibrarysyncConfig(AppConfig):
    name = 'LibrarySync'

当前回答

在我的例子中,我在manage.py shell中尝试了相同的导入。shell被更新的db搞砸了。我的意思是,我忘记在更新DB后重新启动我的shell。

为了解决这个问题,我必须通过以下命令停止shell:

>>> exit()

然后执行如下命令重新启动shell:

$ python3 manage.py shell

希望这能帮助到像我这样的人。

其他回答

您是否遗漏了将应用程序名称放入设置文件中? myAppNameConfig是由.manage.py createapp myAppName命令在apps.py中生成的默认类。其中myAppName是应用程序的名称。

settings.py

INSTALLED_APPS = [
'myAppName.apps.myAppNameConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]

这样,设置文件就会找到您想要调用应用程序的内容。您可以通过在apps.py文件中添加以下代码来更改它的外观

我的应用名称/应用程序.py

class myAppNameConfig(AppConfig):
    name = 'myAppName'
    verbose_name = 'A Much Better Name'

我有一个类似的问题,但我能够解决我的通过明确指定app_label使用元类在我的模型类

class Meta:
    app_label  = 'name_of_my_app'

问题是:

您已经对模型文件进行了修改,但尚未将其添加到DB,但您正在尝试运行Python manage.py runserver。 运行Python manage.py makemigrations Python manage.py迁移 现在Python manage.py runserver,一切都应该没问题了。

TL;DR:添加一个空白__init__.py为我解决了这个问题。

我在PyCharm中得到了这个错误,并意识到我的设置文件根本没有被导入。没有明显的错误告诉我这一点,但是当我在settings.py中放入一些无意义的代码时,它并没有引起错误。

我在local_settings文件夹中有settings.py。但是,我忘记在同一个文件夹中包含__init__.py,以便导入它。一旦我添加了这个,错误就消失了。

我今天得到了这个错误,在谷歌后结束了这里。现有的答案似乎都与我的情况无关。我唯一需要做的就是从应用程序顶层的__init__.py文件中导入一个模型。我必须将我的导入移动到使用模型的函数中。

Django似乎有一些奇怪的代码可以在很多不同的场景中失败!