需要注意的是在 Django 中,所有数据库的结构上面的更新操作都要在工程中使用 make migrations / migrate 来进行。如果在其他终端手动修改了数据库的结构(包括表单,字段等),Django 中建立数据库相关的对应 关系就会被打乱。
如果发生了上面的情况,最笨的办法就是重新导入数据库。当然还有好的办法,就是寻找你做错之前那一步对应的 migrations 文件,删除之后的,保留到那一个文件对应的版本。
这里看一下重新导入数据库的具体步骤:
首先这里要有你需要导入的 .sql 文件。
1. 在其他终端 删除数据库。
drop database [database_name];
2. 在工程中,把app下面除了 init.py 的都删除
inti.py 是初始化的脚本,需要保留
3. 在其他终端 新建一个数据库。
CREATE DATABASE IF NOT EXISTS my_db default charset utf8 COLLATE utf8_general_ci; # 后面是数据库的参数
4. 用文本编辑器打开 .sql 文件
删除对应的 # migrations 段
5. 在其他终端 导入 .sql
use database_mame;
source [xxx.sql]
此上,导入工作结束。
总结一下:需要重新整理数据库的结构。之后再导入。
就是说在其他终端更改数据,插入数据是没有关系的。但是不能更改数据库的结构。