如何解决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 >
},]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。