在你改动了 model.py的内容之后执行下面的命令:
python manger.py makemigrations
相当于 在该app下建立 migrations目录,并记录下你所有的关于modes.py的改动,比如0001_initial.py, 但是这个改动还没有作用到数据库文件。
使用python manger.pymigrate,会将改动作用到数据库文件。
上面两个步骤相信大家都理解。这里要将一下如果一个数据表不小心删除了,我们应该如何操作,如下步骤可以按照操作:
第一,删除关于这个表的关联表,也就是在app下models.py中定义的多个数据表,这些要一并删除。
第二,删除django_migrations中对应的记录。
以上两步骤也是常规操作,正常来说是没问题,
如果出现这个问题,下面提供一个思路:确定上面两个步骤没有问题,可以查看对应的views.py中的代码是否有错误,下面是我的一个逻辑:
其中,改了之后加了 comments._db 的判断,主要目的是为了判断是否有这个数据表。
从这里可以发现,进行 makemigrations 的是否程序也是直接进行执行的,这一点可以进行打断点进行验证。
至于为何使用 ._db 这个也是从断点中找到的一个方法,路子野,如果有正规方法可以留言告诉我。
领取专属 10元无门槛券
私享最新 技术干货