django修改model结构 miaration不生效的问题总结

当在Django中修改model后,遇到migration不生效的问题,通常需要清理migrations文件夹并删除django_migrations表的相关记录。若警告提示表已存在,可能需要删除关联表后再执行migration。
摘要由CSDN通过智能技术生成

在我们设计好models以后,我们可以通过以下命令生成将要同步给数据库的数据结构文件

 python manage.py makemigrations

生成的文件在app目录下的migrations文件夹内以000*开头的文件。

每运行一次makemigrations,django就会根据models的变更在migrations文件夹内生成一个新文件。

然后我们运行python manage.py migrate,django就会根据migrations文件夹内生成一个文件,将数据结构写入数据库。

那么是不是每一次都重复执行所有的migrations内的文件呢?当然不是,每次执行migrate的时候,django会在django_migrations数据表内记录已经执行了的migrations文件。去数据库里查询该表就能看到对应APP里执行了的migrations。

如果修改了表结构,比如加了一个不能为空的字段,那么即使表中没有数据migration时也会提示:

Please select a fix:
1) Provide a one-off default now (will be set on all existing rows)
2) Quit, and let me add a default in models.py

一般情况下修改了表结构处理方法就是:

第一步,我们需要清理migrations文件夹内除了__init__.py这个文件外的所有文件。(当然部分清理的时候我们也可以考虑直接修改这个文件。)

第二步,我们需要清理数据库内django_migrations对应app下的migrations记录。

清理完以后我们再重新做

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值