Django makemigrations 不按 models.py 中的顺序创建模型

Django makemigrations does not create models by order in models.py

我对迁移中创建表的顺序有疑问。由于模型 B 中有一个 ForeignKey 连接到模型 A,因此我在 models.py 中按 A、B、C 的顺序创建模型。那么:

python manage.py makemigrations app

生成了创建所有模型的迁移文件,但是顺序是:

- Create model B
- Create model C
- Create model A
- Add field a_name to b.

因为 models.py 中的顺序确实很重要,但为什么 makemigrations 不遵循给定的顺序?

当且仅当其中一个模型将另一个模型引用为 ForeignKey 时,您在 models.py 中放置模型的顺序很重要。在这种情况下,顺序很重要,您会发现迁移确实保留了顺序。

真正重要的不是当你执行 manage.py makemigrations 时会出现什么,而是当你执行 manage.py migrate 时会发生什么 django 通常会找出正确的顺序。如果在任何时候你觉得你想要控制创建表的顺序,你可以自由地编辑迁移文件(即使这不是真正需要的)