Django models文件模型变更注意事项(表结构的修改)

表结构的修改

1、表结构修改后,原来表中已存在的数据,就会出现结构混乱,makemigrations更新表的时候就会出错

比如第一次建模型,漏了一个字段,后来补上了。(经常遇到模型字段修改)

重新makemigrations,然后报错

数据库规则:除了新建表,如果你再次增加字段,数据库会有一些自动检测的东西(比如有没有默认值,是否允许为空)
如果表中已经有数据,这个字段还是非空的,且没有设定默认值,后台检测不通过就会报错。

解决方法(有两种):
1、新增加的字段,设置允许为空。生成表的时候,之前数据新增加的字段就会为空。(null=True允许数据库中为空,blank=True允许admin后台中为空)
2、新增加的字段,设置一个默认值。生成表的时候,之前的数据新增加字段就会应用这个默认值(default=None,默认值为空)

删除0001_initial.py,再次makemigrations

接着再往数据库推送,python3 manage.py migrate

原来是自己在数据库手动添加过,不是通过django方式的。

于是手贱想删除表,删了再次执行,发现没有变化

删表有风险,可能误删其他表,如果表不多,所以还是新建一个库,环境干净(强迫症啊)

最后完美解决

------------------------------------------------------------------------------------------------------------------

更多细节,交流QQ群:823625453

原文地址:https://www.cnblogs.com/hightech/p/10749051.html

时间: 2024-08-28 20:10:49

Django models文件模型变更注意事项(表结构的修改)的相关文章

SQL数据库表结构的修改(sql2005)

一 .ALTER TABLE命令 ALTER TABLE 语句用于在已有的表中添加.修改或删除列. 二.添加列 语法 :ALTER TABLE table_name ADD column_name datatype eg: ALTER TABLE Persons ADD P_Names VACHAR(50) NOT NULL 三.修改列 3.1修改字段varchar(50)为datetime,允许空eg:  ALTER TABLE Persons ALTER COLUMN  P_Names da

Hibernate使用自定义脚本替换注解或者xml文件中的自动生成表结构

本文作者:苏生米沿 本文地址:http://blog.csdn.net/sushengmiyan/article/details/50534361 我们都清楚,可以使用hibernate的metadata元数据生成表结构,但是一般情况下,我们光靠hibernate的自动生成是远远不够的,我们期待使用自己的sql脚本,你hibernate自动执行那个脚本就可以.那么hibernate支持不支持呢?答案是yes! 只需要我们做以下设置: <property name="hibernate.hb

MySQL修改,表结构大幅修改

------------------create table t_video_file_temp( video_id bigint not null comment '视频Id', file_md5 varchar(64) comment '视频md5', file_size bigint comment '视频大小', source_url varchar(500) comment '视频源地址', file_url varchar(500) comment '视频本地地址', status

mysql表结构的修改-sql记录

1 ALTER TABLE tbl_sms_track add COLUMN SENDCONTENT VARCHAR(500) AFTER PLATEFROM_NAME; -- 添加一列 2 3 ALTER TABLE tbl_sms_track DROP COLUMN SENDCONTENT; -- 删除一列 4 5 ALTER TABLE tbl_sms_track MODIFY SIGN VARCHAR(400); -- 修改数据类型 6 7 ALTER TABLE tbl_sms_tra

Django模型变更

实现模型变更的三个步骤: 修改你的模型(在models.py文件中). 运行python manage.py makemigrations ,为这些修改创建迁移文件 运行python manage.py migrate ,将这些改变更新到数据库中.

Django系列(四):多表操作

1.创建模型 例:我们来假定下面这些概念,字段和关系 作者模型:一个作者有姓名和年龄. 作者详细模型:把作者的详情放到详情表,包含生日,手机号,家庭住址等信息.作者详情模型和作者模型之间是一对一(one-to-one)的关系. 出版社模型:出版社有名称,所在城市以及email. 书籍模型: 书籍有书名和出版日期,一本书可能会有多个作者,一个作者也可以写多本书,所以作者和书籍的关系就是多对多(many-to-many)的关联关系; 一本书只应该由一个出版社出版,所以出版社和书籍是一对多(one-t

Django models通过DateTimeField保存到MySQL的时间的时区问题

最近开始使用Django开发一些系统,在models.py中设置一些数据库表结构并给日期时间字段赋初值,不过在使用的过程中,遇到一点问题.问题是,我本来服务器使用的市区是“Asia/Shanghai”(+08:00),然后用datetime.now保存到数据库中时,里面的时间总是比我的系统时间相差8小时(感觉是UTC时间),但是我也查看了MySQL数据库中的时区是“+08:00”的(在MySQL中“SET GLOBAL time_zone = ‘+08:00′;”语句可以设置时区).这到底是什么

OGG-01163 Bad column表结构一致、trail文件meta不一致处理

变更源端表结构后,目标端ogg告警.2019-04-15 12:48:47 ERROR OGG-01163 Bad column length (21) specified for column CHANNEL_CODE in table MCS.T_MCS_REPAY_ORD_INF, maximum allowable length is 15. 将复制进程中参数注掉后:--ASSUMETARGETDEFS将两边进程都重启,还是报同样的错.又不能轻易跳过交易记录.重新生成定义文件.GGSCI

MySQL表结构为InnoDB类型从ibd文件恢复数据

客户的机器系统异常关机,重启后mysql数据库不能正常启动,重装系统后发现数据库文件损坏,悲催的是客户数据库没有进行及时备份,只能想办法从数据库文件当中恢复,查找资料,试验各种方法,确认下面步骤可行: 一.找回表结构,如果表结构没有丢失直接到下一步 a.先创建一个数据库,这个数据库必须是没有表和任何操作的. b.创建一个表结构,和要恢复的表名是一样的.表里的字段无所谓.一定要是innodb引擎的.CREATE TABLE `test`(  `testID` bigint(20)) ENGINE=