Rak*_*abu 5 django django-models
我的目录结构是。
Mypack:
--> __init__.py
--> admin.py
--> apps.py
--> foo.py
--> models.py
Run Code Online (Sandbox Code Playgroud)
在apps.py中,我有AppConfig。我在foo.py中有一些方法,该方法使用从models.py导入的模型。然后将所有方法导入init .py。
from foo import *
Run Code Online (Sandbox Code Playgroud)
我使这个应用程序可以通过pip安装。当我将其安装在其他Django应用中并尝试运行python manage.py check时。它给出以下错误。
django.core.exceptions.AppRegistryNotReady:应用尚未加载。
请建议我,如何解决此问题?
来自1.9 发行说明(重点是我的):
\n\n\n\n\n\n
\n- 所有模型都需要在已安装的应用程序内定义或声明显式的 app_label。此外,在加载应用程序之前\xe2\x80\x99 不可能导入它们。特别是,\xe2\x80\x99 无法在应用程序的根包内导入模型。
\n
您正在(间接)将模型导入到应用程序的根包中,Mypack/__init__.py. 如果您仍然想将函数导入到foo.py根包中,则需要确保在首次导入模块时不会导入模型。一种选择是使用内联导入:
def foo():\n from .models import MyModel\n MyModel.objects.do_something()\nRun Code Online (Sandbox Code Playgroud)\n\n如果在根包中导入函数不是硬性要求(例如为了向后兼容),我个人会停止导入它们__init__.py并更改其他导入以使用Mypack.foo.
| 归档时间: |
|
| 查看次数: |
1737 次 |
| 最近记录: |