gpt4 book ai didi

django - 无法在 __init__.py django 1.9.4 中导入模型

转载 作者:行者123 更新时间:2023-12-02 09:29:21 29 4
gpt4 key购买 nike

我的目录结构是。

Mypack:
--> __init__.py
--> admin.py
--> apps.py
--> foo.py
--> models.py

在apps.py中,我有AppConfig。我在 foo.py 中有一些方法,它们使用从 models.py 导入的模型。我导入了 init.py 中的所有方法。

from foo import *

我使这个应用程序可以通过 pip 安装。当我将其安装在其他 django 应用程序中并尝试运行 python manage.py 检查时。它给出了以下错误。

django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.

请建议我,如何解决这个问题?

最佳答案

来自1.9 release notes (强调我的):

  • All models need to be defined inside an installed application or declare an explicit app_label. Furthermore, it isn’t possible to import them before their application is loaded. In particular, it isn’t possible to import models inside the root package of an application.

您正在(间接)将模型导入到应用程序的根包 Mypack/__init__.py 中。如果您仍想将 foo.py 中的函数导入到根包中,则需要确保在首次导入模块时不会导入模型。一种选择是使用内联导入:

def foo():
from .models import MyModel
MyModel.objects.do_something()

如果在根包中导入函数不是硬性要求(例如,为了向后兼容),我个人会停止在 __init__.py 中导入它们,并将其他导入更改为使用 Mypack.foo

关于django - 无法在 __init__.py django 1.9.4 中导入模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36233098/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com