迁移中找不到模型(apps.get_model引发LookupError)

时间:2016-05-31 14:13:41

标签: django django-migrations django-hvad

我有以下迁移(为简单起见,删除了逻辑):

def migrate_existing_discounts(apps, _):
    ModelA = apps.get_model('myapp', 'ModelA')
    ModelB = apps.get_model('myapp', 'ModelB')

class Migration(migrations.Migration):

    dependencies = [
        ('myapp', '0071_auto_20160531_1342'),
    ]

    operations = [
        migrations.RunPython(migrate_existing_discounts)
    ]

运行时会出现以下异常:

LookupError: App 'myapp' doesn't have a 'modelb' model.

ModelA继承自models.Model,并且已成功加载。另一方面,ModelB继承自TranslatableModel,因此它会中断。我已经读过(2年前)迁移以前在加载抽象类(ticket#21786ticket#21519)时遇到问题,而TranslatableModel就是其中之一。

之前我遇到过这个问题,最后我转而使用RunSQL迁移,但我想知道如何正确导入模型,因为必须有办法。

注意:程序包django-hvad没有迁移,因此无法添加任何依赖项。

1 个答案:

答案 0 :(得分:0)

如果所有迁移都从头到尾运行,则您引用的模型可能尚未存在于新数据库中。在迁移过程中更新依赖项列表,以引用定义了这些模型的应用程序上的最后一个迁移文件。