Django,将模型类导入新文件。导入错误尝试在没有已知父项的情况下进行相对导入

Posted

技术标签:

【中文标题】Django,将模型类导入新文件。导入错误尝试在没有已知父项的情况下进行相对导入【英文标题】:Django, importing models class into new file. Import error attempted relative import with no known parent 【发布时间】:2021-10-29 12:25:48 【问题描述】:

我正在通过制作一个简单的分析仪表板来学习 Django。我做了 startproject 命令和 startapp 命令,就像教程一样运行。我在 app 文件夹中添加了一个名为 connectionOracle.py 的新文件。 我的文件夹结构是(顶部文件夹是通过 venv 创建的)

AnalysisSite
|AnalysisSite
|coreAnalysis
||models.py
||connectionOracle.py

我在 models.py 文件中有一个名为 WorkOrder 的类。我正在尝试通过执行以下操作将其导入到 connectionOracle.py 文件中

from .models import WorkOrder

然后我转到命令行(在 Windows 上)并导航到 coreAnalysis 文件夹并运行以下命令

python connectionOracle.py

我收到一条错误消息。

ImportError: attempted relative import with no known parent package

我在网上做了一些阅读,我尝试用AnalysisSite.AnalysisSite.coreAnalysis.models 做一个绝对路径 那没有用。我还尝试将连接文件移动到不同的目录,但也没有用。我也尝试进入命令行并输入set DJANGO_SETTINGS_MODULE = AnalysisSite.settings

我还在每个文件夹中放了一个_init_.py。 (Django自动放入项目目录和app目录)。

我不知道我做错了什么

【问题讨论】:

from coreAnalysis.models import WorkOrder. 我也试过这个。我收到错误“ModuleNotFoundError:没有名为“coreAnalysis”的模块”我仔细检查了拼写并在不同的情况下(上/下)。我还尝试查看apps.py文件是否有问题,但名称设置为coreAnalysis 根目录和coreAnalysis 目录中是否有__init__.py 文件? 【参考方案1】:

您正在尝试通过脚本文件访问 Django 组件(模型), 在这种情况下,调用者不是 Django 本身(请求不是来自 url 或不同的 django 工具或机制),

无论如何,在您的自定义 python 文件中,即“connectionOracle.py” 在访问模型本身之前尝试执行一些步骤,

以下网址提供了这些步骤:

https://***.com/a/68936419/12662056

############

根据您的项目路径更改项目路径。

希望对你有帮助

【讨论】:

我试过这个并最终得到以下错误:ModuleNotFoundError: No module named 'AnalysisSite'。我尝试了一些不同的路径变体。我还尝试将其直接路径到 coreAnalysis 文件夹,我得到了同样的错误(它说 AnalysisSite 没有被命名)。

以上是关于Django,将模型类导入新文件。导入错误尝试在没有已知父项的情况下进行相对导入的主要内容,如果未能解决你的问题,请参考以下文章

Django +2 ImportError:无法导入模型

Django 上的 MakeMigration 错误 - ImportError:无法从“django.db.models”导入名称“FieldDoesNotExist”

尝试启动应用程序时无法导入 Django 错误

django 将原本数据库中的表导入models中

Django,我在 manage.py 检查或 sync.db 时收到“错误:模块:无法导入模型”

使用 JSON 的 Django 导入向导