Django 迁移——作为迁移的一部分,我如何擦除模型?

凝胶

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

SourceData -> management command generates -> Results

当我更改结果模型的生成方式时,例如添加新字段,我不想设置默认值或更新现有模型,我想删除所有模型并再次运行脚本以使用新领域:

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

有没有简单的方法来做到这一点?我在网上找到的只是如何通过删除整个数据库来实现这一点,这不是我想要的,我只想删除这个表并重新创建它。

凝胶

无法找出正确的方法来做到这一点,但设法通过以下方式破解它:

  • 从一个干净的 git 历史(没有脏文件)开始——让接下来的步骤更容易
  • 将有问题的模型重命名为其他名称,例如 Model2
  • 运行 makemigrations
  • 还原除生成的迁移之外的所有更改
  • 重新排序生成的迁移文件,所以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 >
            },
        ),
    ]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

除非级联的一部分,否则如何防止从Django Admin中删除Django模型

作为Django Web应用程序的MS Azure应用程序服务发布管道的一部分运行迁移

如何将模型移至Django网站管理员的另一部分

Django-仅在模型中提供Foreignkey的一部分

根据变量获取 django 模型的一部分

Django-作为包含的一部分传递flatpage.title变量

Django序列化器输出作为JSON对象的一部分

Django-替换urlfield的一部分

如何使用多对多关系与不同 PostgreSQL 模式中的表创建 Django 模型,一个模型仅使用非托管表的一部分

如何从“列表”视图中分割字段的一部分– Django Rest Framework

如何手动呈现Django表单的一部分

如何将特定表作为迁移的一部分 - Laravel 5?

Django使用模板变量的值作为另一个变量名的一部分

作为常规应用程序迁移的一部分,运行初始RBAC迁移

在Django中,如何查找作为字符串一部分而不是包含该字符串的术语?

使用Django自定义管理器方法作为Q对象链的一部分

作为更广泛的Django项目的一部分,运行流星应用程序

我正在尝试使用 AJAX 将已经呈现的 Django 模板注入我的页面的一部分

如何在仅连接外部查询集的一部分的Django中创建ForeignKey?

如何使用django rest框架在后端突出显示文章的一部分

如何在django中隐藏base.html中的一部分html代码?

PyCharm作为类的一部分运行django单一测试

Django Python:无法获取字符串的一部分

使用 Django 仅更新 HTML 页面的一部分

在字段的一部分上执行Django查询

用Django中html文件的内容替换模板的一部分

Django:复制文件仅复制一部分

检查用户是否是多人关系django的一部分

Django通用表单集ManytoManyField不是清理数据的一部分