重新排序初始迁移操作

时间:2019-12-06 22:52:45

标签: python django migration makemigrations

每次migrate之后,每次尝试makemigrations进行初始迁移时,我都会收到类似以下错误:

django.db.migrations.exceptions.InvalidBasesError: Cannot resolve bases for [<ModelState: 'Project.Class'>]
This can happen if you are inheriting models from an app with migrations (e.g. contrib.auth)

我认为发生这种情况的原因是因为operations迁移中的模型0001_initial.py的顺序不正确。具有从他人继承的类的操作将添加到其父母的操作之前。重新排序操作后,它可以工作:Process finished with exit code 0。凉!但是如何使makemigrations工作而不每次都这样做?

谢谢!

ps。我尝试在模型的__init__.py中重新排序模型的导入顺序,但是没有用。

1 个答案:

答案 0 :(得分:2)

如果您的 Django项目 中的一个应用程序模型中有 个应用程序 引用了另一个应用程序-可能会导致此类冲突。

建议 分别为每个应用创建迁移 ,并在引用迁移文件时引用另一个应用迁移作为依赖项。

python manage.py makemigrations app-one
python manage.py makemigrations app-two

# example of referencing dependent migration,
# so app-two 0001 migrations runs after app-one 0001 migration
# app-two/migrations/0001-initial.py

dependencies = [("app-one", "0001-init.py")]