Python Django 1.7抛出Django.core.exceptions.AppRegistryNotReady:模型不';还没装呢

Python Django 1.7抛出Django.core.exceptions.AppRegistryNotReady:模型不';还没装呢,python,django,Python,Django,这是对我的windows系统的追踪 Traceback (most recent call last): File "D:\AMD\workspace\steelrumors\manage.py", line 9, in <module> django.setup() File "D:\AMD\Django\django-django-4c85a0d\django\__init__.py", line 21, in setup apps.populate(se

这是对我的windows系统的追踪

Traceback (most recent call last):
  File "D:\AMD\workspace\steelrumors\manage.py", line 9, in <module>
    django.setup()
  File "D:\AMD\Django\django-django-4c85a0d\django\__init__.py", line 21, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "D:\AMD\Django\django-django-4c85a0d\django\apps\registry.py", line 108, in populate
    app_config.import_models(all_models)
  File "D:\AMD\Django\django-django-4c85a0d\django\apps\config.py", line 197, in import_models
    self.models_module = import_module(models_module_name)
  File "C:\Python27\lib\importlib\__init__.py", line 37, in import_module
    __import__(name)
  File "C:\Python27\lib\site-packages\registration\models.py", line 15, in <module>
    User = get_user_model()
  File "D:\AMD\Django\django-django-4c85a0d\django\contrib\auth\__init__.py", line 135, in get_user_model
    return django_apps.get_model(settings.AUTH_USER_MODEL)
  File "D:\AMD\Django\django-django-4c85a0d\django\apps\registry.py", line 199, in get_model
    self.check_models_ready()
  File "D:\AMD\Django\django-django-4c85a0d\django\apps\registry.py", line 131, in check_models_ready
    raise AppRegistryNotReady("Models aren't loaded yet.")
django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet.

当我尝试使用Django 1.7中的应用程序时,出现此错误。问题出在您的注册应用程序中。django registration似乎在模块级别调用
models.py中的
get\u user\u module()
(当应用程序注册过程仍在加载模型时)。这将不再有效:

try:
    from django.contrib.auth import get_user_model
    User = get_user_model()
except ImportError:
    from django.contrib.auth.models import User    
我将此模型文件更改为仅在方法内部调用
get\u user\u model()
(而不是在模块级别),并且在FKs中使用类似以下内容:

user = ForeignKey(settings.AUTH_USER_MODEL)

顺便说一句,在
manage.py
文件中不需要调用
django.setup()
,它是在
execute\u命令行中为您调用的。()

您的
manage.py
是“错误的”;我不知道你是从哪里得到它的,但那不是1.7
manage.py
-你是在使用一些时髦的预发布版本还是什么

manage.py
重置为常规设置,如下所示,一切正常:

#!/usr/bin/env python
import os
import sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "{{ project_name }}.settings")

    from django.core.management import execute_from_command_line

    execute_from_command_line(sys.argv)

运行这些命令解决了我的问题(归功于):


但是我不知道为什么我需要这个。请发表意见。

在运行manage.py之前,您是否需要进入Python虚拟环境


我自己也遇到了这个错误,这就是问题所在。

这就是为我们解决这个问题的原因,并且:

我们的项目从Django1.4开始,先是1.5,然后是1.7。我们的wsgi.py如下所示:

import os
import sys
import django

if __name__ == "__main__":

    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "steelrumors.settings")
    django.setup()
    from django.core.management import execute_from_command_line

    execute_from_command_line(sys.argv)
import os

from django.core.handlers.wsgi import WSGIHandler

os.environ['DJANGO_SETTINGS_MODULE'] = 'myapp.settings'
application = WSGIHandler()
当我更新到1.7样式的WSGI处理程序时:

import os

from django.core.wsgi import get_wsgi_application

os.environ['DJANGO_SETTINGS_MODULE'] = 'myapp.settings'
application = get_wsgi_application()

现在一切正常。

刚刚遇到同样的问题。问题是因为django注册与django 1.7用户模型不兼容

一个简单的修复方法是在您已安装的
django注册
模块中更改这些代码行:

try:
    from django.contrib.auth import get_user_model
    User = get_user_model()
except ImportError:
    from django.contrib.auth.models import User  
致:


我的位置是
.venv/local/lib/python2.7/site packages/registration/models.py
(virtualenv)

我在使用djangocms并添加插件(在我的例子中是djangocms cascade)时遇到了这个问题。当然,我必须将插件添加到已安装的应用程序中。但这里的顺序很重要


在“cms”解决问题之前放置“cmsplugin_cascade”

安装django registration redux==1.1而不是django registration,如果您使用django 1.7

另一个选项是您在已安装的_应用程序中有一个重复条目。对于我测试的两个不同的应用程序,它抛出了这个错误。显然,这不是Django检查的东西,但谁会傻到把同一个应用程序放在列表中两次呢。我就是这样。

对于Django 1.9,这对我来说很有用。要执行的Python脚本位于Django项目的根目录中

    import django 
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "PROJECT_NAME.settings")
    django.setup()
    from APP_NAME.models import *

将项目名称和应用名称设置为您的

/manage.py migrate


这解决了我的问题

我的问题来自init.py。我制作了一个应用程序,并想这样做:

从我的应用程序导入myfunc
而不是:

从MY_APP.views导入myfunc

当我回滚对这些部分的更改时。一切正常。

如果您在创建模型之间的ForeignKey关系时遇到此错误。下面的示例引发
AppRegistryNotReady:尚未加载模型
错误

从my_app.models导入工作区
工作空间=模型。外键(工作空间)
然后请尝试将模型作为字符串引用

从my_app.models导入工作区
#这两条线路中的一条可能会解决问题。
workspace=models.ForeignKey('workspace'))
workspace=models.ForeignKey('my_app.workspace'))


您有一个名为
django-django-4c85a0d的目录
<代码>4c85a0d
恰好是一个(不稳定的)Django提交散列。我不相信你真的在使用Django 1.7(c.f.我的答案)你解决过你的问题吗?这也可能与
venv
有关。重新创建venv目录为我修复了它mv venv venv_old virtualenv venv source./venv/bin/activate pip install-r requirements.txt``我在mac上添加LOGGING in settings.py时也遇到类似的错误,这是因为我在/var/log/xx/debug.log上创建了一个日志文件,并且没有权限,所以我使用sudo来运行服务器,一切都很好。可能会帮助一些同志我在运行
docker compose exec…
时看到了这个错误。问题是我没有将所需的环境变量传递给命令。将它放在
中,如果uuu name\uuuu='\uuuu main\uuuu':
对我有效,但我不知道这是否是一个好的解决方案。@Neutraler不确定您是如何做到的,但由于django正在导入此模块,这不应该起作用。可能你根本没有导入用户模型,这是为了避免循环dep。我的意思是把这些行放在名称检查中。它可能正在跳过执行。我没有做足够的测试。很抱歉,只是重复我在django 1.7发行说明中读到的关于中断更改的内容。基本上,Django有一种加载已安装应用程序的新方法。如果您从Python脚本加载Django(就像我在自定义单元测试中那样),那么在继续之前需要进行一些初始化,调用setup()就是如何进行的。除此之外,我的1.6.2到1.7.1的升级似乎是一个小时的实际工作,这是团队的荣誉。我在哪里运行上述命令?我把它添加到一个.py文件还是什么?你应该在发生错误的同一个上下文中运行它这有足够的升级票值得被标记为正确的答案这也解决了我在命令行更新脚本中遇到的一个问题,该脚本在迁移到1.7时中断了。我有一个类似的manage.py,我仍然有这个问题你可以使用django注册redux。它更新并维护了fork:为我修复了这个问题(我的堆栈与OP完全相同),以防有人在Django 1.8上遇到这个问题,它也适用于那里。顺序确实很重要:
cms、mptt、菜单、sekizai、filer、easy_缩略图
我不同意@wim的编辑,不是因为我认为我们应该这样做
from django.conf import settings
try:
    from django.contrib.auth import get_user_model
    User = settings.AUTH_USER_MODEL
except ImportError:
    from django.contrib.auth.models import User 
    import django 
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "PROJECT_NAME.settings")
    django.setup()
    from APP_NAME.models import *