我正在运行项目并显示此错误。我用谷歌搜索并尝试了一些解决方案,但似乎没有用。
File "/home/bs-094/Dev/backend/busgroup-backend/src/bus_portal_backend/apps/inquiry/forms/inquiry_details.py", line 2, in <module>
from ..models.inquiry import Inquiry
ValueError: attempted relative import beyond top-level package
我的文件夹结构是
busgroup-backend
src
bus_portal_backend
apps
inquiry
models
_init_.py
inquiry.py
forms
inquiry_details.py
任何人都可以帮助我解决问题,那将是非常有用的帮助。我是django的新手。谢谢
编辑: 这是解决我的问题的方法,我必须以这种方式导入
from bus_portal_backend.apps.inquiry.models import Inquiry
此外,我正在运行调试器。我的脚本路径为busgroup-backend/src/manage.py
,将其更改为/home/bs-094/Dev/backend/busgroup-backend/src/manage.py
,这使我成功运行了项目。
答案 0 :(得分:1)
forms
似乎不包含__init__.py
文件,因此Python认为它不是一个包。因此,尝试从..models
进行导入就是尝试将其提升到当前包的根目录之上(因为...busgroup-backend/src/bus_portal_backend/apps/inquiry/forms/inquiry_details.py
实际上是一个独立的模块)。
相对导入仅在包中起作用。因此,您还应该通过创建forms
来制作models
的{{1}}和inquiry
子包。
答案 1 :(得分:1)
如果您导入from ..models.inquiry import Inquiry
,则..
是指
busgroup-backend
src
bus_portal_backend
apps
没有__init__.py
,因此不被python视为软件包。