Django4 中文入门教程 Django4.0 迁移-依赖

2024-02-25 开发教程 Django4 中文入门教程 匿名 7

虽然迁移是针对每个应用程序的,但模型隐含的表和关系过于复杂,无法一次为一个应用程序创建。当您进行需要运行其他东西的迁移时 - 例如,您在图书应用程序中将 ​ForeignKey ​添加到您的作者应用程序 - 生成的迁移将包含对authors迁移中的依赖。

这意味着当您运行迁移时,authors迁移首先运行并创建 ​ForeignKey ​引用的表,然后生成 ​ForeignKey ​列的迁移随后运行并创建约束。如果这没有发生,迁移将尝试创建 ​ForeignKey ​列,而它所引用的表不存在,并且您的数据库将引发错误。

这种依赖行为会影响您限制为单个应用程序的大多数迁移操作。限制为单个应用程序(在 ​makemigrations ​或 ​migrate ​中)是尽力而为的承诺,而不是保证;任何其他需要用于正确获取依赖关系的应用程序都将是。

没有迁移的应用不得与有迁移的应用有关系(​ForeignKey​、​ManyToManyField ​等)。有时它可能有效,但不受支持。