python django 更改模型字段出错时的一个解决办法

python/django 框架自带的 orm 无疑是django框架最拿得出手的一个亮点,orm无疑极大的方便了项目的开发,提高了开发的效率. 在实际的项目开发过程中,我们有时候需要修改模型的字段,但是稍有不慎就会开发出各种各样的bug,有时还无法进行还原. 我还曾看到过有同事直接去数据库中删除数据表,打算暴力解决的,如果你以为删除数据表最终就能解决问题的话,那就大错特错了.

使用django orm 的每一次迁移,都会在数据库中有一个数据表进行保存该模型这一次的迁移记录,下一次迁移时,orm 会把数据表中的上一次迁移记录和migrations文件进行比对,如果发现记录中的数据和migrations的迁移文件没有差异那么就会提示 No change 无法迁移. 如果真的打算舍弃数据表中的数据去进行挽救的话,可以这样子做,先将对应数据表中的数据全部删除, 然后打开模型文件 models.py 将所有代码进行注释.

然后执行 makemigrations  migrate

再然后,再到models.py 打开所有的注释,在模型中进行需要的修改,再次 makemigrations migrate 

就是这么神奇 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

(建议还是先进行数据备份,防止再次使用到, 如何将数据表结构存在差异的数据保存到另外一个数据表中,这里有一个思路就是使用脚本利用orm将一个数据表中的数据读取出来,然后添加上存在差异的数据,再利用orm将重新处理后的数据保存到另外一个数据表中,从而完成数据的转移)

转载于:https://www.cnblogs.com/lowmanisbusy/p/9312144.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值