当前位置: 首页 > 知识库问答 >
问题:

在另一个应用程序模型中导入应用程序模型类

陆啸
2023-03-14

我有两个应用程序:同事和服务,每个都有自己的模型

在coworkers models.py中,我可以“从services.models导入服务”。

当我尝试在services models.py中“from coworkers.models import Status”时,会收到以下错误消息:

回溯(最近一次调用):文件“/Users/lucas/Documents/projetos/cwk-manager/lib/python2.7/site-packages/Django-1.4.3-py2.7.egg/Django/core/management/commands/runserver.py”,第91行,在内部运行self.validate(display_num_errors=True)文件中“/Users/lucas/Documents/projetos/cwk-manager/lib/python2.7/site packages/Django-1.4.3-py2.7.egg/Django/core/management/base.py”,第266行,在validate num\u errors=get\u validation\u errors(s,app)文件/Users/lucas/Documents/projetos/cwk-manager/lib/python2.7/site-packages/Django/1.4.3-py2.7.egg/Django/core/management/validation.py中“,第30行,在get_app_errors().items():File”/Users/lucas/Documents/projetos/cwk manager/lib/python2.7/site packages/Django-1.4.3-py2.7.egg/Django/db/models/loading.py”中的get_app_errors self()文件第158行“/Users/lucas/Documents/projetos/cwk-manager/lib/python2.7/site-packages/Django-1.4.3-py2.7.egg/Django/db/models/load.py”,第64行,在“填充self.load\u-app(app\u-name,True)文件”/Users/lucas/Documents/projetos/cwk-manager/lib/python2.7/site-packages/Django-1.4.3-py2.7.egg/Django/db/models/load.py”中“,第88行,在load_app models=import_module('.models',app_name)文件“/Users/lucas/Documents/projetos/cwk manager/lib/python2.7/site packages/Django-1.4.3-py2.7.egg/Django/utils/importlib.py”中,第35行,在import_module import(name)文件“/Users/lucas/Documents/projetos/cwk manager/cwk manager/cwk manager/cwk manager/coworkers/models.py”中,第,在from services.models导入服务文件“/Users/lucas/Documents/projetos/cwk-manager/cwk-manager/cwk-u-manager/services/models.py”第5行中,类内服务(models.Model):文件“/Users/lucas/Documents/projetos/cwk-manager/cwk-manager/cwk-u-manager/models.py”,第11行,服务状态=models.ForeignKey(状态)NameError:未定义名称“状态”

--

同事模型.py

from django.db import models
from services.models import Services

class Status(models.Model):
    status_name = models.CharField(max_length=50)
    status_description = models.TextField(blank=True, null=True)

    class Meta:

        verbose_name = "Status"
        verbose_name_plural = "Status"

    def __unicode__(self):
        return self.status_name

服务模型.py

from django.db import models
from coworkers.models import Status

# This table contains all the information about plans and other general services provided.
class Services(models.Model):
    service_name = models.CharField(max_length=100)
    service_description = models.TextField(blank=True, null=True)
    service_price = models.DecimalField(max_digits=7, decimal_places=2, blank=True, null=True)
    creation_date = models.DateField(auto_now_add=True)
    last_update = models.DateField(auto_now=True)
    status = models.ForeignKey(Status)

    class Meta: 

        verbose_name = "Services"
        verbose_name_plural = "Services"

    def __unicode__(self):
        return self.service_name

--有人能帮我看看我做错了什么吗?

提前谢谢!

共有3个答案

任绪
2023-03-14

它是循环导入的,这会导致错误。

你可以试试,

import coworkers
status = models.ForeignKey(coworkers.models.Status)
隗嘉歆
2023-03-14

在Django 1.6.5中:

import coworkers
status = models.ForeignKey(coworkers.models.Status)

应该是这样的:

import coworkers
status = models.ForeignKey(coworkers.Status)

我(现在)知道OP使用的是Django 1.4.3,一些答案可能会在该版本的Django中解决这个问题。但是,我花了一段时间才注意到版本,这些答案在1.6.5中不起作用。

干杯

童琪
2023-03-14

这是由Python中的循环导入引起的。您可以使用以下语法:

status = models.ForeignKey('coworkers.models.Status')

Django将使用此路径确定模型,所以您不需要导入状态。

在您的情况下,另一个解决方案是删除coworker.models中的第二个导入语句,因为此文件中似乎没有使用服务。

 类似资料:
  • 问题内容: 我确信你们中有人注意到,如果您有Acrobat Reader(或其他PDF阅读器),并在Firefox中打开一个PDF,您会看到它嵌入在您的标签中。有什么方法可以将应用程序嵌入JFrame中? 问题答案: 这是一个相当棘手的问题。通常,诸如Adobe Reader之类的本机应用程序不提供可以嵌入到swing应用程序中的组件。但是在Windows中,有COM / OLE方法可以将应用程序

  • 我试图在ASP.NET Core2.2应用程序(Visual Studio 2019)中执行一个Typescript文件到另一个Typescript文件的简单导入。我没有使用任何其他框架,如Angular。我遇到了无法在运行时为模块文件找到正确路径的问题。 我有两个简单的Typescript文件,我已经放在子文件夹“Typescript”中--它们被命名为“mytsmodule.ts”和“anot

  • 问题内容: 我有一个带有四个模型的django应用。我现在意识到这些模型之一应该在单独的应用程序中。我确实已经安装了South来进行迁移,但是我认为这不能自动解决。如何将其中一种模型从旧应用程序迁移到新模型? 另外,请记住,我将需要将此过程重复进行,以便可以迁移生产系统等。 问题答案: 假设我们有两个应用程序:通用和专用: 现在,我们要将模型common.models.cat移至特定的应用程序(精

  • 长话短说,我试图在CommonJS模块中使用一个只有ES6模块入口点的npm包,即(GitHub),因为我的整个50多个模块的应用程序都是在CommonJS中构建的。根据节点文档,这样做的标准方法是使用函数。我使用以下代码尝试了这种方法: 但是,这会导致包出错,而不一定是上面的导入函数: 有没有一种方法可以绕过这个问题,这样我就可以在CommonJS模块中使用这个包了?

  • 因此,我试图在另一个项目(测试框架)中添加一个SpringBoot可执行jar作为依赖项。 然而,一旦添加到pom和导入。Java导入不能正常工作。如果我看看罐子里面,所有的包都在前面加上: BOOT-INF/classes.some.package.classname.class 还有一些与Spring启动相关的软件包,MANIFEST等。 如果我将SpringBoot应用程序的构建切换为只使用

  • 我有一个Django 1.10内置的网站。该网站有3种不同的应用程序:团队、成员和新闻。 第一个叫做团队的应用程序有一个叫做团队的模型。 这是Team/models.py: 第二个应用称为成员,它有一个名为成员的模型。 这是Member/models.py: 我想要的是在成员档案中包含团队的名称,所以我知道它应该是这样的: 但是我不知道在括号里放什么,也不知道如何将团队的模型导入到成员的模型中。我