Django 1.7 抛出 django.core.exceptions.AppRegistryNotReady:模型尚未加载

2025-02-27 09:07:00
admin
原创
51
摘要:问题描述:这是我的 Windows 系统上的回溯。Traceback (most recent call last): File "D:AMDworkspacesteelrumorsmanage.py", line 9, in <module> django.set...

问题描述:

这是我的 Windows 系统上的回溯。

Traceback (most recent call last):
  File "D:AMDworkspacesteelrumorsmanage.py", line 9, in <module>
    django.setup()
  File "D:AMDDjangodjango-django-4c85a0ddjango__init__.py", line 21, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "D:AMDDjangodjango-django-4c85a0ddjangoapps
egistry.py", line 108, in populate
    app_config.import_models(all_models)
  File "D:AMDDjangodjango-django-4c85a0ddjangoappsconfig.py", line 197, in import_models
    self.models_module = import_module(models_module_name)
  File "C:Python27libimportlib__init__.py", line 37, in import_module
    __import__(name)
  File "C:Python27libsite-packages
egistrationmodels.py", line 15, in <module>
    User = get_user_model()
  File "D:AMDDjangodjango-django-4c85a0ddjangocontribauth__init__.py", line 135, in get_user_model
    return django_apps.get_model(settings.AUTH_USER_MODEL)
  File "D:AMDDjangodjango-django-4c85a0ddjangoapps
egistry.py", line 199, in get_model
    self.check_models_ready()
  File "D:AMDDjangodjango-django-4c85a0ddjangoapps
egistry.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 中使用注册应用程序时出现此错误


解决方案 1:

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

import django
django.setup()

但是我不确定我为什么需要这个。欢迎提出评论。

解决方案 2:

这就是为我们和这些人解决问题的方法:

我们的项目从 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()

现在一切正常。

解决方案 3:

问题出在您的注册应用程序中。似乎 django-registration 在模块级别调用get_user_module()models.py当应用程序注册过程仍在加载模型时)。这将不再起作用:

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。(来源)

解决方案 4:

刚刚遇到了同样的问题。该问题是由于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)

解决方案 5:

对于 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 设置为你的

解决方案 6:

另一种可能是 INSTALLED_APPS 中存在重复条目。我测试的两个不同应用都出现了此错误。显然这不是 Django 检查的内容,但是谁会愚蠢到把同一个应用放入列表中两次呢?就是我。

解决方案 7:

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

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

解决方案 8:

我非常确定这还不算晚。如果您使用文件Django 4进行.env设置,则在 settings.py 中定义一个值但文件中不存在该值时,您将遇到此错误.env

参见以下场景:

我的 PLAID_KEYsettings.py如下

PLAID_KEY=env('PLAID_KEY')

但是,PLAID_KEY 在我的 .env 文件中不存在,添加它可以解决问题。

解决方案 9:

当我使用 djangocms 并添加插件(在我的情况下为:djangocms-cascade)时,我遇到了这个问题。当然,我必须将插件添加到 INSTALLED_APPS。但这里的顺序很重要。

将“cmsplugin_cascade”放置在“cms”之前解决了该问题。

解决方案 10:

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

解决方案 11:

./manage.py migrate

这解决了我的问题

解决方案 12:

如果在模型之间创建 ForeignKey 关系时出现此错误。以下示例会引发AppRegistryNotReady: Models aren't loaded yet错误。

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')

解决方案 13:

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

解决方案 14:

我的问题来自init.py。我制作了一个应用程序并想执行以下操作:

from MY_APP import myfunc

而不是:

from MY_APP.views import myfunc

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

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2974  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1836  
  PLM(产品生命周期管理)系统在企业的产品研发、生产与管理过程中扮演着至关重要的角色。然而,在实际运行中,资源冲突是经常会遇到的难题。资源冲突可能导致项目进度延迟、成本增加以及产品质量下降等一系列问题,严重影响企业的效益与竞争力。因此,如何有效应对PLM系统中的资源冲突,成为众多企业关注的焦点。接下来,我们将详细探讨5...
plm项目管理系统   47  
  敏捷项目管理与产品生命周期管理(PLM)的融合,正成为企业在复杂多变的市场环境中提升研发效率、增强竞争力的关键举措。随着技术的飞速发展和市场需求的快速更迭,传统的研发流程面临着诸多挑战,而将敏捷项目管理理念融入PLM,有望在2025年实现研发流程的深度优化,为企业创造更大的价值。理解敏捷项目管理与PLM的核心概念敏捷项...
plm项目   47  
  模块化设计在现代产品开发中扮演着至关重要的角色,它能够提升产品开发效率、降低成本、增强产品的可维护性与可扩展性。而产品生命周期管理(PLM)系统作为整合产品全生命周期信息的关键平台,对模块化设计有着强大的支持能力。随着技术的不断发展,到 2025 年,PLM 系统在支持模块化设计方面将有一系列令人瞩目的技术实践。数字化...
plm软件   48  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用