django 在新建数据库时,出现了数据库的结构与自己定义的不一致,极度怀疑人生

1.出现错误:TypeError: int() argument must be a string, a bytes-like object or a number, not 'datetime.datetime'

2.出现的原因在于在models.py增加了其他的ForeignKey

3.运行python manage.pu makemigrations 时,提示增加默认值,

4。根据提示输入一直错误,输入timezone.now 问题也存在

5.此时运行python manage.py migrate 则会出现如题问题

6.此时怀疑时外键问题,或者models.py中的models.DateTimeField()类型错误,一直注释相应的代码调试,问题依然存在,此时距离问题的发现已经有3个小时了,没有办法后,打算将关于外键的和models.DateTimeField全部注释掉,且注释多个model,只留一个model(model即models.py中的类)

7.此时将django 的默认数据库db.sqlite3中的表:django_migrations 记录清空,不断执行python manage.py makemigrations ,根据提示删除数据库相应的表(需根据提示按顺序删除),提示语如下图:

8,根据提示删除所有该删除的表格后,执行python manage.py makemigrations,发现表格结构,仍然和以前的一模一样,并没有根据 我的models.py中的代码生成数据结构,数据库结构仍然有被注释的代码,此时极度怀疑人生了,且执行了几遍该问题仍然存在,后来在stackoverflow(链接) 一个不起眼的答案中发现了在 项目中有个文件夹为

9.在这个文件夹中存放着数据库结构,所以当新建数据库时这些文件会被再次应用(旧的数据库结构),恍然大悟为什么创建新的数据库时创建了旧的结构,处理方式是:删除migrations 文件夹下的所有文件,此时再次新建数据库就无问题了,同时题目描述的问题也能解决了

猜你喜欢

转载自blog.csdn.net/qq_34309753/article/details/87657700