Python Django 1.7抛出Django.core.exceptions.AppRegistryNotReady:模型不';还没装呢
这是对我的windows系统的追踪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
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.7manage.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 *