应该没有人和我一样菜吧
今天遇到这个问题: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
百度一下,发现
- managed 默认值为 True
- 如果设置为 False ,Django 将不会为当前 model 创建或者删除数据库表。
- 通常在表示某个 通过其他方法创建的现有数据表时这会非常有用。
- model 在处理所有其他方面的事情时是完全一致的。
- 如果你的测试中包含非托管 model (managed=False),那么在测试之前,你应该要确保在测试 创建时已经创建了正确的数据表。