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

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'

当前回答

我得到同样的错误,我不知道如何解决这个问题。我花了好几个小时才发现django中的manage.py和init.py在同一个目录下。

之前:

|-- myproject
  |-- __init__.py  <---
  |-- manage.py
  |-- myproject
    |-- ...
  |-- app1
    |-- models.py
  |-- app2
    |-- models.py

后:

|-- myproject
  |-- manage.py
  |-- myproject
    |-- ...
  |-- app1
    |-- models.py
  |-- app2
    |-- models.py

当你得到这个“没有声明一个显式的app_label”错误时,你会感到非常困惑。但是删除这个init文件解决了我的问题。

其他回答

在我的情况下,当我试图运行python manage.py runserver时,没有连接到我的项目的虚拟环境时,我得到了这个错误。

我今天试图运行Django测试时出现了这个错误,因为我在其中一个文件中使用了.models import *语法的简写。问题是我的文件结构是这样的:

    apps/
      myapp/
        models/
          __init__.py
          foo.py
          bar.py

在models/__init__.py中,我使用简写语法导入我的模型:

    from .foo import *
    from .bar import *

在我的应用程序中,我像这样导入模型:

    from myapp.models import Foo, Bar

这导致Django模型在运行./manage.py测试时没有显式声明app_label。

为了解决这个问题,我必须显式地从models/__init__.py中的完整路径导入:

    from myapp.models.foo import *
    from myapp.models.bar import *

这就解决了错误。

H - t https://medium.com/@michal。博克fix-weird-exceptions-when-running-django-tests-f58def71b59a

在使用PyCharm运行测试时,我遇到了完全相同的错误。我已经通过显式设置DJANGO_SETTINGS_MODULE环境变量来修复它。如果您正在使用PyCharm,只需点击编辑配置按钮并选择环境变量。

将变量设置为your_project_name。设置和那应该解决问题。

似乎出现了这个错误,因为PyCharm使用自己的manage.py运行测试。

在我的例子中,我在将代码从Django 1.11.11移植到Django 2.2时得到了这个错误。我正在定义一个自定义的FileSystemStorage派生类。在Django 1.11.11中,我在models.py中有如下一行:

from django.core.files.storage import Storage, DefaultStorage

然后在文件中我有类定义:

class MyFileStorage(FileSystemStorage):

然而,在Django 2.2中,我需要在导入时显式引用FileSystemStorage类:

from django.core.files.storage import Storage, DefaultStorage, FileSystemStorage

瞧!,错误消失。

注意,每个人都在报告Django服务器吐出的错误消息的最后一部分。然而,如果你向上滚动,你会在错误的中间找到原因。

在不断遇到这个问题并不断回到这个问题之后,我想我应该分享我的问题是什么。

@Xeberdee的所有内容都是正确的,所以遵循它,看看是否解决了问题,如果没有,这是我的问题:

在我的app .py中是这样的:

class AlgoExplainedConfig(AppConfig):
    name = 'algo_explained'
    verbose_name = "Explain_Algo"
    ....

我所做的就是把项目名称加在我的应用名称前面,像这样:

class AlgoExplainedConfig(AppConfig):
name = '**algorithms_explained**.algo_explained'
verbose_name = "Explain_Algo"

这解决了我的问题,我能够运行makemigrations和migrate命令之后!祝你好运