【问题标题】:Django 1.7.3 - Lookup failed for model referenced by fieldDjango 1.7.3 - 查找字段引用的模型失败
【发布时间】:2015-04-12 16:01:42
【问题描述】:

我正在尝试使用 Django 创建一个新模型,但我一直遇到错误 Lookup failed for model referenced by field help.HelpDefinition.org: account.OrganizationOrganization 已导入。你可以看到下面的模型。

models.py

org = models.ForeignKey(Organization, unique=True)
help_type = models.CharField(max_length=255, choices=HELP_CHOICES)
help_content = models.TextField(blank=True)

此模型之前已成功迁移。我在 Postgres 中通过 psql 删除了表,以便可以重新创建它。

【问题讨论】:

    标签: python django postgresql django-migrations


    【解决方案1】:

    当您更改关系中的目标对象时会发生这种情况。即使它们具有相同的名称和字段,它们也不是相同的对象。我遇到了同样的问题,从 migrations 文件夹中删除所有以前的迁移解决了它。

    【讨论】:

    • 这听起来很奇怪,但实际上是这样做的。对模型名称的修改似乎 Django 迁移尚不支持(或版本 1.7.3 尚不支持)。
    • 如果需要修改模型名称,可以创建一个空迁移,使用RenameModel类。
    【解决方案2】:

    您还可以将来自对象应用的最后一次迁移添加为迁移的依赖项。这对我有用。

    class Migration(migrations.Migration):
    
    dependencies = [
        (<app>, <last_migration_filename>),
    ...
    

    【讨论】:

    • 我还通过在依赖项中添加另一个应用程序迁移解决了“查找字段引用的模型失败...”错误。
    • 并非所有英雄都穿着斗篷。这个答案救了我。高分!
    【解决方案3】:

    我的情况是:离开南方我从几个应用程序中删除了几乎所有迁移文件并应用了makemigrationsmigrate,后来我在一个应用程序中发现了一些被遗忘的迁移,我尝试执行该过程(删除/makemigrations) 仅适用于这个应用程序。但是后退一步并为所有应用程序重新创建迁移为我解决了这个问题。

    【讨论】:

      猜你喜欢
      • 2016-05-10
      • 2017-10-30
      • 1970-01-01
      • 2016-04-30
      • 1970-01-01
      • 2018-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多