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)