Django 字段中 null 和 blank的区别
blank
- 设置为 True 时,字段可以为空
- 设置为 False 时,字段是必须填写的
- 默认为 False
null
- 设置为 True 时,数据库的字段允许为NULL,而且表单中的空值将会被存储为NULL
- 设置为 False 时,数据库的字段不允许为NULL
- 默认为 False
概括来说:
- blank只是在表单验证的时候会检测你是否可以为空
- null则是在表单数据为空值时会向数据库插入NULL
但是由于各数据类型的特点,使用效果也不相同:
| Field 类型 | 设置null=True | 设置blank=True |
|---|---|---|
| CharField, TextField, SlugField, EmailField, CommaSeparatedIntegerField等 |
不要设置 django规定储存空字符串来代表空值, 当从数据库中读取NULL或空值时都为空字符串 |
可以设置 设置后允许接受widget中为空值(即不填写), 储存到数据库时空值变为空字符串 |
| FileField, ImageField |
不要设置 django实际储存的是路径的字符串, 因此同上 |
可以设置 同上 |
| BooleanField | 不要设置 因为有NullBooleanField代替 |
不要设置 |
| IntegerField, FloatField, DecimalField等 |
可以设置 如果你希望在数据库中能储存NULL |
可以设置 设置后允许接受widget中为空值(即不填写), 设置为True时必须同时设置null=True |
| DateTimeField, DateField, TimeField等 |
可以设置 如果你希望在数据库中能储存NULL |
可以设置 设置后允许接受widget中为空值(即不填写), 设置为True时必须同时设置null=True |
| ForeignKey, ManyToManyField, OneToOneField |
可以设置 如果你希望在数据库中能储存NULL |
可以设置 设置后允许接受widget中为空值(即不填写) |
| GenericIPAddressField | 可以设置 如果你希望在数据库中能储存NULL |
可以设置 设置后允许接受widget中为空值(即不填写) |
| IPAddressField | 不推荐设置 用GenericIPAddressField代替 |
不推荐设置 用GenericIPAddressField代替 |
附上一个博客链接:
https://www.b-list.org/weblog/2006/jun/28/django-tips-difference-between-blank-and-null/
Django 字段中 null 和 blank的区别的更多相关文章
- django字段设置null和blank的区别
null 这个选项跟数据库有关. null=True的话,数据库中该字段是NULL,即允许空值:null=False(默认)的话,数据库中该字段是NOT NULL,即不允许空值. blank 这个选项 ...
- django Field选项中null和blank的区别
blank只是在填写表单的时候可以为空,而在数据库上存储的是一个空字符串:null是在数据库上表现NULL,而不是一个空字符串: 需要注意的是,日期型(DateField.TimeField.Date ...
- Django-Model模型Field选项中null和blank的区别
- Option-**blank**设置为True时代表填写表单的时候可以为空,即在save()执行时此字段可以没有,如果字段没有就在数据库上存储一个空字符串: - Option-**null**设置 ...
- 浅谈JS中的!=、== 、!==、===的用法和区别 JS中Null与Undefined的区别 读取XML文件 获取路径的方式 C#中Cookie,Session,Application的用法与区别? c#反射 抽象工厂
浅谈JS中的!=.== .!==.===的用法和区别 var num = 1; var str = '1'; var test = 1; test == num //tr ...
- Django models中的null和blank的区别
blank在数据库上存储的是一个空字符串 如需设置字段可以为空:blank=True,默认为blank=False(字段必须填写); null在数据库上表现为NULL,而不是一个空字符串 如需设置字段 ...
- MySQL 中NULL和空值的区别
平时我们在使用MySQL的时候,对于MySQL中的NULL值和空值区别不能很好的理解.注意到NULL值是未知的,且占用空间,不走索引,DBA建议建表的时候最好设置字段是NOT NULL 来避免这种低效 ...
- MySQL 中NULL和空值的区别 (转载 http://blog.sina.com.cn/s/blog_3f2a82610102v4dn.html)
平时我们在使用MySQL的时候,对于MySQL中的NULL值和空值区别不能很好的理解.注意到NULL值是未知的,且占用空间,不走索引,DBA建议建表的时候最好设置字段是NOT NULL 来避免这种低效 ...
- Django模型中OneToOneField和ForeignKey的区别
网上看到一篇讲解"Django模型中OneToOneField和ForeignKey区别" 的文章,浅显易懂; 可以把ForeignKey形象的类比为: ForeignKey是on ...
- 【面试】MySQL 中NULL和空值的区别?
做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 01 小木的故事 作为后台开发,在日常工作中如果要接触Mysql数据库,那么不可避免会遇到Mysql中的NULL和空值.那 ...
随机推荐
- QT离线安装包
各个版本下载链接http://mirrors.ustc.edu.cn/qtproject/archive/qt http://www.qtcn.org/bbs/i.php
- IntelliJ IDEA 2017.3尚硅谷-----关联数据库
- 第三十三篇 玩转数据结构——红黑树(Read Black Tree)
1.. 图解2-3树维持绝对平衡的原理: 2.. 红黑树与2-3树是等价的 3.. 红黑树的特点 简要概括如下: 所有节点非黑即红:根节点为黑:NULL节点为黑:红节点孩子为黑:黑平衡 4.. 实现红 ...
- Java:面向对象的编程语言
java是面向对象的编程语言 Object,就是指面向对象的对象,对象就是实例. 在java里,对象是类的一个具体实例.就像:人,指一个类.你.我.他.张三.李四.王五等则是一个个具体的实例,也就是j ...
- bzoj3744: Gty的妹子序列 (BIT && 分块)
强制在线的区间询问逆序对数 如果不是强制在线 就是可以用莫队乱搞啦 强制在线的话 用f[i][j]记录第i块到第j个点之间的逆序对数 用s[i][j]记录前i块中小于等于j的数字个数 离散化一下 BI ...
- java程序员摸爬滚打的三年,这些经历你值得借鉴
不知不觉都2020年2月底了,小羊同学从毕业快开始都一直从事java开发这个行业,前两天开通了头条号,想借此发文分享一下这几年的经历吧,如果你是还没毕业的大学生或者刚入行不久,也许会对你有帮助. 1: ...
- [AGC027C]ABland Yard
Description AGC027C 给定一张图,点有标号A或B,计算是否对于任意的一个由AB构成的字符串都在图中有对应的路径. Solution 观察可以发现,如果有个环(不一定是简单环)是AAB ...
- webpack 打包增加版本信息
What do we need? 笔者目的是在vue项目打包后的 dist/index.html 文件中写入本次打包git用户.最后一次git提交信息,这样做的目的是便于线上项目的管理和防止同事之间的 ...
- typedef基本用法
[代码演示] 例一 例二 例三
- GitHub网页版基本操作
创建存储库 登录GitHub进入主页,点击头像左边的加号,创建存储库 填写存储库名称.描述,根据需求设置其他选项.点击“Create repository”按钮 创建分支 打开之前创建好的存储库,点击 ...