在Django中,我们操作数据库的时候会遇到这样一个问题:

You are trying to add a non-nullable field 'code' to business without a default; we can't do that (the database needs something to populate existing rows).
Please select a fix:1) Provide a one-off default now (will be set on all existing rows with a null value for this column)2) Quit, and let me add a default in models.py

这个问题是怎样产生的呢?
    首先我们定义一个数据表的类:

class Business(models.Model):# 默认有个自增的id列,并且是主键caption = models.CharField(max_length=32)

这是我们输入命令:

python manager.py makemigrations
python manager.py migrate

此时会在数据库中创建一个名为app01_business的数据表(假设我们的app名字是app01),这个表中总共有两列,一列是我们定义的caption列,另一列是Django自动为我们生成的id列,此列是自增的,并且是主键.
    接下来我们插入几条数据:

INSERT INTO `cmdb1`.`app01_business` (`id`, `caption`) VALUES ('4', '第四');
UPDATE `cmdb1`.`app01_business` SET `caption`='第一' WHERE `id`='1';
UPDATE `cmdb1`.`app01_business` SET `caption`='第二' WHERE `id`='2';
UPDATE `cmdb1`.`app01_business` SET `caption`='第三' WHERE `id`='3';

假如此时我们有了一个新的需求:在这个表中增加一列code,此时我们就需要在数据表类中来定义:

class Business(models.Model):# 默认有个自增的id列,并且是主键caption = models.CharField(max_length=32)code = models.CharField(max_length=32)

然后执行:

python manager.py makemigrations

此时就会出现:

You are trying to add a non-nullable field 'code' to business without a default; we can't do that (the database needs something to populate existing rows).
Please select a fix:1) Provide a one-off default now (will be set on all existing rows with a null value for this column)2) Quit, and let me add a default in models.py

出现这个的原因是之前已经创建了这个数据表,并且数据表中已经有数据,如果我们新增加一列的话,Django不知道我们新增加的这一列的值是什么,所有需要我们来处理一下.
    处理这个问题的方法有两个:
方法一:
执行第一个选项,然后输入一个默认值,也就是你新增加的这一列的默认值是什么.例如:

You are trying to add a non-nullable field 'code' to business without a default; we can't do that (the database needs something to populate existing rows).
Please select a fix:1) Provide a one-off default now (will be set on all existing rows with a null value for this column)2) Quit, and let me add a default in models.py
Select an option: 1
Please enter the default value now, as valid Python
The datetime and django.utils.timezone modules are available, so you can do e.g. timezone.now
Type 'exit' to exit this prompt
>>> 'sa'
Migrations for 'app01':app01/migrations/0002_business_code.py- Add field code to business
fml@fml-To-be-filled-by-O-E-M:~/桌面/python学习/django_web/web_fan_1$ python manage.py migrate
Operations to perform:Apply all migrations: admin, app01, auth, contenttypes, sessions
Running migrations:Applying app01.0002_business_code... OK
fml@fml-To-be-filled-by-O-E-M:~/桌面/python学习/django_web/web_fan_1$ python manage.py makemigrations
Migrations for 'app01':app01/migrations/0003_auto_20191014_1024.py- Alter field code on business
fml@fml-To-be-filled-by-O-E-M:~/桌面/python学习/django_web/web_fan_1$ python manage.py migrate
Operations to perform:Apply all migrations: admin, app01, auth, contenttypes, sessions
Running migrations:Applying app01.0003_auto_20191014_1024... OK

我这里把新增加的这一列的默认值设置成了"sa",也就是说每一条数据的"code"列的值都是"sa".
方法二:
    在定义数据表类的时候给它一个默认值:

class Business(models.Model):# 默认有个自增的id列,并且是主键caption = models.CharField(max_length=32)code = models.CharField(max_length=32,default='sa')

这样的结果和方法一的结果是一样 .

写在最后

本文是个人的一些学习笔记,如有侵权,请及时联系我进行删除,谢谢大家.

You are trying to add a non-nullable field 'code' to business without a default; we can't do that...相关推荐

  1. nullable field verification in gateway backend

    Created by Wang, Jerry, last modified on Jan 24, 2015 要获取更多Jerry的原创文章,请关注公众号"汪子熙":

  2. Shouldn't CSRs automatically add default version?

    Shouldn't CSRs automatically add default version? 原文:http://openssl.6102.n7.nabble.com/Shouldn-t-CSR ...

  3. Nullable Value Type

    在.net2.0以前,值类型是不充许赋值为null的,这也是值类型和引用类型的一个重要区别.随着.net2.0的出现,这一局面得以改善,这种功能有点像数据库中的数据类型(int,datetime等), ...

  4. ❤️Spark的关键技术回顾,持续更新!【推荐收藏加关注】❤️

    目录 前言 Spark的关键技术回顾 一.Spark复习题回顾 1.Spark使用的版本 2.Spark几种部署方式? 3.Spark的提交任务的方式? 4.使用Spark-shell的方式也可以交互 ...

  5. 2021年大数据Spark(四十五):Structured Streaming Sources 输入源

    目录 Sources 输入源 Socket数据源-入门案例 需求 编程实现 ​​​​​​​文件数据源-了解 ​​​​​​​需求 ​​​​​​​代码实现 ​​​​​​​Rate source-了解 So ...

  6. Json.Net学习笔记

    Json.Net学习笔记 摘自:  http://www.verydemo.com/demo_c360_i45119.html 分类: 编程语言/ ASP.NET/ 文章 导读:string goog ...

  7. 完成个人中心—导航标签

    个人中心-视图函数带标签页面参数tag @app.route('/usercenter/<user_id>/<tag>') def usercenter(user_id, ta ...

  8. Android Binder 学习笔记

    前言: Binder是Android给我们提供的一种跨进程通信方式.理解Binder能帮助我们更好的理解Android的系统设计,比如说四大组件,AMS,WMS等系统服务的底层通信机制就都是基于Bin ...

  9. Epplus:导出Excel

    看到其它大神的Epplus导出Excel,结合写出符合自己需求的将导出数据到Excel,给其它人参考一下,也可以学习http://www.cnblogs.com/caofangsheng/p/6149 ...

最新文章

  1. 关于PCA算法的一点学习总结
  2. gzip压缩後的javascript在ie下不加载
  3. 通过SecureCRT连接Vmware中的RHEL6.3的方法
  4. JavaScript中的原型,对split方法的重写
  5. Eclipse集成Groovy插件
  6. 从个人到团队:思维转变是关键
  7. php字符串怎么传到html_php字符串函数(四):html与字符串之间的转换
  8. AI算法连载12:统计之梯度提升树
  9. android ui stencil kit 下载,实用的iOS6/iPhone5 GUI/iPad PSD以及其它版本素材
  10. android studio for android learning (四) 兼容性问题
  11. vue + echarts 实现简单中国地图
  12. 什么是LAMP架构?
  13. google退出中国市场——g迷怎么办
  14. Activity跳转并传递
  15. 想知道直销银行账户吗?
  16. 【系统运维-raid5】HW5885V3下挂4块2T硬盘如何做RAID5
  17. 文献解读|迁徙蝗虫生理和转录水平的衰老特征
  18. RuntimeError: DataLoader worker is killed by signal: Killed.报错解决
  19. OpenCV视频质量检测--清晰度检测
  20. 湖大OJ-实验A---- ADFA的可判定性

热门文章

  1. Chasedb1--视网膜血管分割数据集
  2. UFC/k1 VS中国散打!!!!!!!
  3. 学习笔记:快速入门ZooKeeper技术
  4. 混合云是什么,混合云是怎么工作的?
  5. 走在技术这条阳光大道上
  6. 2020年中国德化陶瓷博览会暨茶具文化节隆重举行—五洲御瓷分会场精品荟萃
  7. “新智认知”杯上海高校程序设计竞赛暨第十七届上海大学程序设计春季联赛----G-CSL的训练计划
  8. Windows10 使用 Sony PHA-1 耳放
  9. 浅谈HTML5和H5区别
  10. 惊涛怪浪(double dam-break) -- position based fluids