Django 迁移——如何在迁移过程中擦除模型?

Django migrations -- how do I wipe a model as part of a migration?

我有一个工作流程,其中一个模型是由脚本根据一些也存储在数据库中的数据生成的:

SourceData -> management command generates -> Results

当我更改 Results 模型的生成方式时,例如添加新字段,我不想设置默认值或更新现有模型,我想删除所有模型,只是 运行 脚本再次使用新字段重新生成它们:

Delete all Results -> run management command v2 -> Results (+ new field)

有没有简单的方法来做到这一点?我在网上找到的所有内容都是如何通过删除 whole 数据库来完成此操作,这不是我想要的,我只想删除这个 table 并重新创建它.

无法找到正确的方法,但通过以下方式成功破解:

  • 从干净的 git 历史记录(无脏文件)开始 -- 让后续步骤更容易
  • 将有问题的模型重命名为其他名称,例如 Model2
  • 运行 迁移
  • 还原除生成的迁移之外的所有更改
  • 重新排序生成的迁移文件,使 DeleteModel 排在 CreateModel 之前,并将 CreateModel 中创建的模型名称改回原始模型名称。它应该看起来像这样:
class Migration(migrations.Migration):

    dependencies = [
        ("<app name>", "<previous migration>"),
    ]

    operations = [
        migrations.DeleteModel(
            name="ModelName",
        ),
        migrations.CreateModel(
            name="ModelName",
            fields=[
                # < all fields of your model >
            ],
            options={
                # < all meta options of your model >
            },
        ),
    ]