Django 可以创建迁移文件,但数据库里不创建新表(通过命令生成model的朋友看过来)

今天遇到这个问题:Django 可以创建迁移文件,在同步的时候系统自带的表可以成功,但是自定义的没有生效

python manage.py makemigrations   # 运行生成迁移文件的命令
python manage.py migrate  # 同步数据库

按照网上各种各样的教程都试了一下,都不可以

比如:
1.删掉migrations下的所有文件,删掉数据库django_migrations表里有关应用的记录,重新执行命令

2.删掉数据库,重新创建,删掉migrations下的所有文件,重新执行命令

3.执行命令

python manage.py makemigrations --empty 你的app名

重新执行命令

一开始我怀疑是字段类型的问题,可能和数据库不匹配之类的,但是我的model类是用创建好的数据库导出来的,再导回去不应该会出错,我仔细看了看model类,发现了这个
managed=False
在这里插入图片描述
百度一下,发现

  1. managed 默认值为 True
  2. 如果设置为 False ,Django 将不会为当前 model 创建或者删除数据库表。
  3. 通常在表示某个 通过其他方法创建的现有数据表时这会非常有用。
  4. model 在处理所有其他方面的事情时是完全一致的。
  5. 如果你的测试中包含非托管 model (managed=False),那么在测试之前,你应该要确保在测试 创建时已经创建了正确的数据表。

就是说,你的数据库里已经有这些表了,然后通过命令生成了model文件,不需要再通过模型迁移再迁回去,所以生成的字段自带这个设置managed=False,也就导致一直创建不成功 ORZ

解决方案:

一、将managed=False删除,重新执行命令

二、你的数据库里已经有这些表,可以直接用,改一下setting数据库设置,重新执行命令

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tfnmdmx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值