如何在Django中将模型从一个应用程序导入到另一个应用程序?

时间:2017-09-27 09:23:35

标签: python django

我正在尝试从另一个应用的views-file中的一个应用引用一个模型(Person)。不幸的是,我得到了一个未解决的引用" -error。是否可以在Django中引用其他应用程序的模型?如果是这样,我做错了什么?

让我用一个例子来证明:

下图显示了我的项目。我目前在应用程序名为" autocomplete"的views.py(标记为绿色)中。我想在文件中引用一个人模型" models.py" (标记为红色),属于app" resultregistration"。但是,我收到错误"未解析的参考人员#34;,即使在MODEL.py中确实存在类Person

enter image description here

文件settings.py位于athlitikos / athlitikos文件夹中,manage.py仅在athlitikos中(如下图所示)

enter image description here

非常感谢任何帮助!

编辑:我现在尝试从..resultregistration.models导入Person"运行"因为我看到我在屏幕截图中所做的事情显然是错误的。但是,然后我收到错误消息"尝试相对导入超出顶级包"

感谢您的时间!

6 个答案:

答案 0 :(得分:5)

如果resultregistration应用程序位于项目目录(包含manage.py的目录)中,那么您根本不应在导入中包含项目名称athlitikos。请尝试以下方法:

from resultregistration.models import Person

答案 1 :(得分:3)

mm为什么你重复athlitikos?,尝试替换:

from athlitikos.athlitikos.resultregistration.models import Person

from resultregistration.models import Person

答案 2 :(得分:1)

如果我们分析您的目录树,我们可以看到:

athlitikos
    autocomplete
        views.py
    resultregistration
        models.py

views.py autocomplete中,您可以引用具有相对路径的其他模块。试试这个:

from ..resultregistration.models import Person

第一个点上升到autocomplete,第二个点上升到athlitikos。现在,您可以访问resultregistration及其下的所有内容。

答案 3 :(得分:1)

我认为它会起作用:

from athlitikos.resultregistration.models import Person

答案 4 :(得分:0)

从pycharm导入时,它从当前文件的级别autocomplete/views.py开始查找,但是Django从项目级别的manage.py级别开始查找,因此您可以直接使用from resultregistration.models import Person。即使pycharm的检查将向您显示代码中的错误,但在运行项目时它将通过。

答案 5 :(得分:0)

resultregistration.models应该这样做。只需确保该应用已添加到您settings.py中已安装的应用中即可。