将模型类导入另一个应用程序-Django

时间:2020-07-22 14:23:42

标签: python django

我正在尝试从另一个应用程序导入模型类。我的结构如下所示:

mysite/
-- main/
        models.py
-- webshop/
        models.py     

我想将模型类从我的网上商店应用程序导入到main / models.py中。我在main / models.py文件中运行以下命令:

from django.db import models
from ..webshop.models import Item

# Create your models here.
class Test(models.Model):
    item = models.ForeignKey(Item, on_delete=models.CASCADE)

在我的文本编辑器中,一切似乎都很好。它会找到合适的应用程序,并找到我需要在那里导入的模型类Item。

运行makemigrations时,出现以下错误:

ValueError:尝试相对导入超出顶级软件包

我在SO上还阅读了其他一些有关如何进行此工作的问题,但无法弄清楚。尝试过:

mysite.webshop.models import Item

也。但是然后我得到了:ModuleNotFoundError:没有名为“ mysite.webshop”的模块。

有人有建议吗?

1 个答案:

答案 0 :(得分:0)

基于错误ValueError: attempted relative import beyond top-level package,我将在您的文本编辑器中假设您当前的工作目录为mysite/。因此,使用..webshop.models试图在mysite/上方上移两个目录,这就是为什么出现错误的原因。

您需要做的是:

from django.db import models
from webshop.models import Item