在迁移回滚期间无法从其他应用导入Django模型

时间:2018-01-29 00:03:29

标签: python django python-3.x django-migrations

我正在为new_app创建数据迁移,并可以将其回滚。

# This is `new_app` migration
class Migration(migrations.Migration):

    dependencies = [
    ]

    operations = [
        migrations.RunPython(import_data, reverse_code=delete_data)
    ]

此迁移会将一些数据添加到其他应用中定义的模型中:my_other_app。要导入我想要更新或删除记录的模型,我使用apps.get_model()方法。

# This is `new_app` migration
def import_data(apps, schema_editor):   
    model = apps.get_model('my_other_app', 'MyModel')

当我应用迁移时,它就像魅力一样。但是当我运行尝试使用:~> manage.py migrate new_app zero回滚迁移时,我得到异常:LookupError: No installed app with label 'my_other_app'.回滚代码中的模型导入:

# This is `new_app` migration
def delete_data(apps, schema_editor):
    schema_model = apps.get_model('my_other_app', 'MyModel')

模型导入的代码是相同的,但是为什么它在迁移期间不起作用?目前我在回滚期间有直接模型import的解决方法。不知道将来是否会引起麻烦。

1 个答案:

答案 0 :(得分:3)

确保dependencies包含您引用的其他应用的最新迁移。例如:

dependencies = [
    'my_other_app.0001_initial',
]

另外,请确保'my_other_app'设置为INSTALLED_APPS