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

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

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

其他回答

当我试图将Django Rest Framework应用程序升级到DRF 3.6.3和Django 1.11.1时,我得到了这个错误。

对于在这种情况下的其他人,我在GitHub问题中找到了我的解决方案,这是在DRF设置中取消UNAUTHENTICATED_USER设置:

# webapp/settings.py
...
REST_FRAMEWORK = {
    ...
    'UNAUTHENTICATED_USER': None
    ...
}

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

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

这里没有一个答案解决了我的问题,把我们都带到这里的错误消息对我来说是一个转移注意力的错误消息——但我确实找到了一个解决方案。

对我来说,这个问题的真正原因是:

Django tries to register apps Some exception occurs during app registration (root cause) Something in exception handling tooling pulls in a model somewhere That model lives in an app that hasn't been registered (because, remember, app registration was broken by the root cause exception above) Finally, as its last act before dying Django spits out the (red herring) complaint that brought us all here - i.e. SomeModel doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.

而不是关心这个错误(即把我们带到这里的错误),我需要向上滚动并阅读第一条错误消息。

这可能看起来像别的东西,它可以是任何打破应用注册。对我来说,根本原因是:

Traceback (most recent call last):
[...SNIP...]                                                                                                                                                                                      
  File "/Users/user/.pyenv/versions/appName_py3/lib/python3.7/site-packages/django/__init__.py", line 24, in setup                   
    apps.populate(settings.INSTALLED_APPS)                                                                                         
  File "/Users/user/.pyenv/versions/appName_py3/lib/python3.7/site-packages/django/apps/registry.py", line 114, in populate 
    app_config.import_models()                                                                                                       
[... SNIP ...]                                                                                                    
  File "/Users/user/app_name/api/models/models.py", line 1122, in <module>              
    class SomeObject(models.Model):                                                                                     
  File "/Users/user/dev_alt/app_name/api/models/models.py", line 1134, in SomeObject
    some_property = models.ForeignKey(SomeOtherObject, null=True, blank=True)                         
TypeError: __init__() missing 1 required positional argument: 'on_delete'   

[...SNIP...]
During handling of the above exception, another exception occurred:

<RED HERRING STACK TRACE THAT BROUGHT US ALL HERE>

同样,“根本原因”问题对你来说可能不同——但对我来说是不同的:我正在从1.11升级一个遗留的Django应用程序。X ~ 3.2.x。在此过程中,Django做了一个破坏向后兼容性的改变,要求模型上所有的ForeignKey和OneToOne属性都有一个on_delete参数。

我为应用程序中的200多个违规情况添加了这个参数,我的根本原因问题和没有声明显式app_label问题都得到了解决。

在我的例子中,我在将代码从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服务器吐出的错误消息的最后一部分。然而,如果你向上滚动,你会在错误的中间找到原因。

如果所有配置都是正确的,导入时可能会一团糟。注意您是如何导入有问题的模型的。

下面的代码在.models import Business中不起作用。请使用完全导入路径:from myapp。模型进口业务