参数化 django 的迁移被跳过(--以编程方式伪造)

Posted

技术标签:

【中文标题】参数化 django 的迁移被跳过(--以编程方式伪造)【英文标题】:Parametrize django's migration to be skipped (--fake programmatically) 【发布时间】:2017-05-14 21:49:13 【问题描述】:

Django 1.9 为我准备了这个迁移(sqlmigrate 输出):

ALTER TABLE `order` DROP FOREIGN KEY `order_manager_id_refs_id_2c366637`;
ALTER TABLE `order` ADD CONSTRAINT `order_order_manager_id_20bba80d_fk_auth_user_id` FOREIGN KEY (`order_manager_id`) REFERENCES `auth_user` (`id`);

它只是删除和添加相同的东西。 我刚刚删除了那里的默认值,但是

根据django docs Django 从不设置数据库默认值并且总是在 Django ORM 代码中应用它们,所以

如何将此迁移参数化为仅标记为已完成并且对数据库不执行任何操作?实际上,我需要将 --fake 参数放在迁移代码/文件中。

【问题讨论】:

【参考方案1】:

您可以以fake migration 运行它,它会跳过任何 SQL 迁移操作,并在完成后写入 django_migrations:

manage.py migrate your_migration_name.py --fake

【讨论】:

我知道--fake,但我不想在每次部署时都记住它。

以上是关于参数化 django 的迁移被跳过(--以编程方式伪造)的主要内容,如果未能解决你的问题,请参考以下文章

设计路线被调用时被跳过

Boost.Python dll 在编译时被跳过

第二个 cin 被跳过或无法正常工作

如何以编程方式为 Django 中的给定模型生成 CREATE TABLE SQL 语句?

如何使用 Django migrate 命令跳过迁移?

performSegueWithIdentifier 被跳过 *SWIFT