Django 1.7引发django.core.exceptions.AppRegistryNotReady:模型尚未加载
这是我的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.
我的manage.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)
我得到这个错误,当我试图在Django 1.7中使用注册应用程序
这是为我们和这些人解决的:
我们的项目从Django 1.4开始,先是1.5,然后是1.7。 我们的wsgi.py是这样的:
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()
现在一切正常。
运行这些命令解决了我的问题(相当于这个答案 ):
import django django.setup()
但是我不知道为什么我需要这个。 意见将不胜感激。
这个问题是在你的注册应用程序。 看起来,django-registration在模块级别的models.py
中调用get_user_module()
(当模型仍然由应用程序注册过程加载时)。 这将不再工作:
try: from django.contrib.auth import get_user_model User = get_user_model() except ImportError: from django.contrib.auth.models import User
我会改变这个模型文件,只调用get_user_model()
内部方法(而不是在模块级别),并在FKs使用类似:
user = ForeignKey(settings.AUTH_USER_MODEL)
顺便说一下,调用django.setup()
不应该在您的manage.py
文件中被需要,它在execute_from_command_line
被调用。 ( 来源 )
刚刚遇到同样的问题。 问题是因为django-registration
与django 1.7用户模型不兼容。
一个简单的解决办法是更改这些代码行,在你安装的django-registration
模块::
try: from django.contrib.auth import get_user_model User = get_user_model() except ImportError: from django.contrib.auth.models import User
至::
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
我在.venv/local/lib/python2.7/site-packages/registration/models.py
(virtualenv)
这适用于我的Django 1.9。 要执行的Python脚本位于Django项目的根目录中。
import django os.environ.setdefault("DJANGO_SETTINGS_MODULE", "PROJECT_NAME.settings") django.setup() from APP_NAME.models import *
将PROJECT_NAME和APP_NAME设置为你的
另一种select是在INSTALLED_APPS中有一个重复的条目。 这抛出了两个不同的应用程序,我testing了这个错误。 显然,这不是Django检查的内容,但是谁又愚蠢地把同一个应用程序放在列表中两次。 我,那是谁。
在运行manage.py之前,您是否有需要input的Python虚拟环境?
我自己遇到了这个错误,那就是问题所在。
我遇到这个问题,当我使用djangocms和添加一个插件(在我的情况下:djangocms级联)。 当然,我不得不将这个插件添加到INSTALLED_APPS。 但是这个顺序在这里很重要。
在 “cms”解决问题之前放置“cmsplugin_cascade”。
安装django-registration-redux == 1.1而不是django-registration,如果你使用的是django 1.7
你的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)