【问题标题】:Import model error from one app to another app将模型错误从一个应用程序导入另一个应用程序
【发布时间】:2013-04-19 13:21:16
【问题描述】:

我在 django 项目中有 2 个应用程序。我想将模型从一个应用程序导入到另一个应用程序。但它给了我

NameError:名称“JobGenre”未定义

当我尝试同步数据库时

customer.models

from job.models import JobGenre
class Worker(Costumer):
   keyword=models.ForeignKey(JobGenre, null=True)

job.models

class JobGenre(models.Model):
    genre=models.CharField(max_length=40)

如果我使用

keyword=models.ForeignKey('job.models.JobGenre', null=True)

它给了

错误:一个或多个模型未验证: coster.worker: 'keyword' 与模型 job.models.JobGenre 有关系,它要么没有安装,要么是抽象的。

在这种情况下我该怎么办?

【问题讨论】:

  • JobGenre 表是新表吗?如果是,您需要删除数据库并重新创建,或者使用 django-south,创建迁移并将其应用于您的数据库表
  • 整个数据库是新的,正在等待与项目同步
  • 你在job 中有__init__.py 吗?>
  • 我怀疑您没有将job 应用程序包含在您的settings.py INSTALLED_APPS 列表中。
  • 我在 INSTALLED_APP 中也有工作应用

标签: python django models


【解决方案1】:
keyword=models.ForeignKey('job.models.JobGenre', null=True)

在我看来不正确。

试试吧:

keyword.models.ForeignKey('job.JobGenre', null=True)

【讨论】:

    【解决方案2】:

    您不需要为 ForeignKey 方法提供完整的包路径。只需提供 appname.modelclass 即可。

    keyword=models.ForeignKey('job.JobGenre', null=True)
    

    应该可以。请参考here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-12
      • 1970-01-01
      • 2015-10-03
      • 1970-01-01
      • 2011-12-22
      • 1970-01-01
      相关资源
      最近更新 更多