Django 1.7抛出 Django.core.Exception. 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.

还有我的经纪人 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中使用 登记应用程序时,我得到了这个错误

145278 次浏览

问题在于你的注册应用程序。看起来 django 注册在 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()(而不是在模块级别) ,并在 FK 中使用如下内容:

user = ForeignKey(settings.AUTH_USER_MODEL)

顺便说一下,对 django.setup()的调用不应该在你的 manage.py文件中被要求,它是在 execute_from_command_line中为你调用的。(来源)

你的 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)

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

import django
django.setup()

但是我不确定我为什么需要这个,如果有意见我会很感激的。

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

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

这就是为什么我们和 这些人解决了这个问题:

我们的项目从 Django 1.4开始,先是1.5,然后是1.7:

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-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(viralenv)

当我使用 djangocms 并添加一个插件(在我的例子中是 djangocms-cade)时遇到了这个问题。当然,我必须将这个插件添加到 INSTALLED _ APPS。但命令很重要。

放置‘ cmsplugin _ cade’之前‘ cms 解决了这个问题。

如果使用 django 1.7,则安装 django-register-redux = = 1.1

另一个选项是在 INSTALLED _ APPS 中有一个重复条目。在我测试的两个不同的应用程序中出现了这个错误。显然这不是 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 设置为您的

./manage.py migrate

这解决了我的问题

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

from MY_APP import myfunc

而不是:

from MY_APP.views import myfunc

当我回滚这些部分的变化。一切都工作得很好。

如果您在模型之间创建 ForeignKey 关系的上下文中得到此错误。

from my_app.models import Workspace


workspace = models.ForeignKey(Workspace)

然后请尝试将模型称为字符串。

from my_app.models import Workspace


# One of these two lines might fix the problem.
workspace = models.ForeignKey('Workspace')
workspace = models.ForeignKey('my_app.Workspace')

我敢肯定现在还不算晚。如果使用 Django 4.env文件进行设置,如果在 setings.py 中定义了一个值,而该值在 .env文件中不存在,则会遇到这个错误:

参见下面的场景:

我的 settings.py中的 PLAID _ KEY 如下所示

PLAID_KEY=env('PLAID_KEY')

但是,PLAID _ KEY 在我的. env 文件中不存在,添加它就修复了它。