Django 1.7.3 - 查找字段引用的模型失败
Posted
技术标签:
【中文标题】Django 1.7.3 - 查找字段引用的模型失败【英文标题】:Django 1.7.3 - Lookup failed for model referenced by field 【发布时间】:2015-04-12 16:01:42 【问题描述】:我正在尝试使用 Django 创建一个新模型,但我一直遇到错误 Lookup failed for model referenced by field help.HelpDefinition.org: account.Organization
。 Organization
已导入。你可以看到下面的模型。
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
删除了表,以便可以重新创建它。
【问题讨论】:
【参考方案1】:当您更改关系中的目标对象时会发生这种情况。即使它们具有相同的名称和字段,它们也不是相同的对象。我遇到了同样的问题,从 migrations
文件夹中删除所有以前的迁移解决了它。
【讨论】:
这听起来很奇怪,但实际上是这样做的。对模型名称的修改似乎 Django 迁移尚不支持(或版本 1.7.3 尚不支持)。 如果需要修改模型名称,可以创建一个空迁移,使用RenameModel
类。【参考方案2】:
您还可以将来自对象应用的最后一次迁移添加为迁移的依赖项。这对我有用。
class Migration(migrations.Migration):
dependencies = [
(<app>, <last_migration_filename>),
...
【讨论】:
我还通过在依赖项中添加另一个应用程序迁移解决了“查找字段引用的模型失败...”错误。 并非所有英雄都穿着斗篷。这个答案救了我。高分!【参考方案3】:我的情况是:离开南方我从几个应用程序中删除了几乎所有迁移文件并应用了makemigrations
和migrate
,后来我在一个应用程序中发现了一些被遗忘的迁移,我尝试执行该过程(删除/makemigrations) 仅适用于这个应用程序。但是后退一步并为所有应用程序重新创建迁移为我解决了这个问题。
【讨论】:
以上是关于Django 1.7.3 - 查找字段引用的模型失败的主要内容,如果未能解决你的问题,请参考以下文章
Django ORM - 模型引用另一个模型ManyToMany字段