简单了解Django ORM常用字段类型及参数配置


Posted in Python onJanuary 07, 2020

这篇文章主要介绍了简单了解Django ORM常用字段类型及参数配置,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

一、数值型

  • AutoField对应int(11)。自增主键,Django Model默认提供,可以被重写。
  • BooleanField对应tinyint(1)。布尔类型字段,一般用于记录状态标记。
  • DecimalField对应decimal。开发对数据精准要求较高大的业务时考虑使用。比如:cash=models.DecimalField(max_length, decimal_places=2, default=0, verbose_name=“消费金额”),就是定义长度为8位、精度位2位的数字,例如数字:666666.66。
  • IntergerField对应**int(11) **。同AutoField一样,唯一的差别就是不自增。
  • PositiveIntegerField。同IntegerField,只包含正整数。
  • SmallIntegerField对应smallint。小整数时一般会用到。

二、字符型

django对应到Mysql中有两种类型:longtext和varchar。

​ 除了TextField是longtest类型外,其他属于varchar类型。

  • CharField对应varchar。基础的varchar类型。
  • URLField.继承自CharField,但是实现了对URL特特殊处理。用来存储URL数据,非URL数据可以在业务层就拒绝掉,不会存入数据库中。
  • UUIDField对应char(32)。除了在PostgreSQL中使用的是uuid类型外,在其他数据库中均是固定长度char(32),用来存放生成的唯一id。
  • EmailField。同URLfield一样继承自CharField,多了对email的特殊处理。
  • FileField。同URLField一样,它继承自CharField,对了对文件的特殊处理。
  • TextField对应longtext。一般用于存放大量文本内容,比如新闻正文、博客正文。
  • ImageField。继承自FileField,用来处理图片相关的数据,在展示上会有所不同。

三、日期类型

django中有3中日期类型,分别对应Mysql的date、datetime和time

  • DateField对应date
  • DateTimeField对应datetime
  • TimeField对应time

四、关系类型

  • ForeignKey,外键
  • OneToOneField,一对一
  • ManyToManyField,多对多

五、参数

上面django所提供的字段都是类。

比如models.CharField的定义就是:class CharField:。

每个字段里面都提供了参数可以选择:

  • null。可以同blank进行对比。null用于设定在数据库层面是否允许为空
  • blank。针对业务层面,该值是否允许为空。
  • choices。配置字段的choices后,在admin页面上就可以看到对应的可选项展示。
  • db_column。默认情况下,定义的field就是对应数据库中的字段名称,通过这个参数可以指定Model中的某个字段对应数据库中的哪个字段。
  • db_index。数据库索引配置。
  • default。默认值配置。
  • editable。是否可编辑,默认是True。如果不想这个字段显示在页面上,可以配置为False。
  • error_messages。用来自定义字段值校验失败时的异常提示,它是字典格式。key的值可选项为null、blank、invalid、invalid_choice、unique和unique_for_date。
  • help_text。字段提示语,配置这一项后,在页面对应字段的下方会展示此配置。
  • primary_key。主键,一个Model只允许设置一个字段为primary_key。
  • unique。唯一约束,当需要配置唯一值时,设置unique=True,设置此项后,不需要设置db_index。
  • unique_for_date。针对date(日期)的联合约束。比如说一天只能写一篇博文,即:unique_for_date=“博文”
  • unique_for_month。针对月份的联合约束 。
  • unique_for_month。针对年份的联合约束。
  • verbose_name。字段对应的展示文案。
  • validators。自定义校验逻辑,同form类似。

关于Django字段类型中 blank和null的区别

blank

设置为True时,字段可以为空。设置为False时,字段是必须填写的。字符型字段CharField和TextField是用空字符串来存储空值的。

如果为True,字段允许为空,默认不允许。

null

设置为True时,django用Null来存储空值。日期型、时间型和数字型字段不接受空字符串。所以设置IntegerField,DateTimeField型字段可以为空时,需要将blank,null均设为True。

如果为True,空值将会被存储为NULL,默认为False。

如果想设置BooleanField为空时可以选用NullBooleanField型字段。

一句话概括

  • null 是针对数据库而言,如果 null=True, 表示数据库的该字段可以为空。
  • blank 是针对表单的,如果 blank=True,表示你的表单填写该字段的时候可以不填,比如 admin 界面下增加 model 一条记录的时候。直观的看到就是该字段不是粗体
  • 通俗点说,该字段null=true后,你进行插入,修改操作时可以为空,然后Django把空值转换成null存在数据库中,而blank只是在表单验证的时候会检测你是否可以为空

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python的IDEL增加清屏功能实例
Jun 19 Python
python 将数据保存为excel的xls格式(实例讲解)
May 03 Python
使用Python的Django和layim实现即时通讯的方法
May 25 Python
Python连接Mssql基础教程之Python库pymssql
Sep 16 Python
Python 经典面试题 21 道【不可错过】
Sep 21 Python
解决python3 Pycharm上连接数据库时报错的问题
Dec 03 Python
浅谈Python 敏感词过滤的实现
Aug 15 Python
Python facenet进行人脸识别测试过程解析
Aug 16 Python
Python实现使用dir获取类的方法列表
Dec 24 Python
keras实现多GPU或指定GPU的使用介绍
Jun 17 Python
python中super()函数的理解与基本使用
Aug 30 Python
Python识别花卉种类鉴定网络热门植物并自动整理分类
Apr 08 Python
解决torch.autograd.backward中的参数问题
Jan 07 #Python
Pytorch 中retain_graph的用法详解
Jan 07 #Python
PyTorch中的Variable变量详解
Jan 07 #Python
python enumerate内置函数用法总结
Jan 07 #Python
pytorch加载自定义网络权重的实现
Jan 07 #Python
Matplotlib绘制雷达图和三维图的示例代码
Jan 07 #Python
Pytorch 神经网络—自定义数据集上实现教程
Jan 07 #Python
You might like
PHP中Header使用的HTTP协议及常用方法小结
2014/11/04 PHP
php画图实例
2014/11/05 PHP
PHP 搜索查询功能实现
2016/11/29 PHP
多浏览器支持的右下角浮动窗口
2010/04/01 Javascript
showModelDialog弹出文件下载窗口的使用示例
2013/11/19 Javascript
JS的get和set使用示例
2014/02/20 Javascript
JavaScript探测CSS动画是否已经完成的方法
2016/08/30 Javascript
Jquery循环截取字符串的方法(多出的字符串处理成"...")
2016/11/28 Javascript
vue数据双向绑定原理解析(get & set)
2017/03/08 Javascript
Webpack性能优化 DLL 用法详解
2017/08/10 Javascript
快速理解 JavaScript 中的 LHS 和 RHS 查询的用法
2017/08/24 Javascript
Vue项目全局配置页面缓存之按需读取缓存的实现详解
2018/08/01 Javascript
详解如何为你的angular app构建一个第三方库
2018/12/07 Javascript
JS实现数组去重,显示重复元素及个数的方法示例
2019/01/21 Javascript
微信小程序之几种常见的弹框提示信息实现详解
2019/07/11 Javascript
JS如何生成动态列表
2020/09/22 Javascript
Python实现的批量下载RFC文档
2015/03/10 Python
Python和Java进行DES加密和解密的实例
2018/01/09 Python
python自动登录12306并自动点击验证码完成登录的实现源代码
2018/04/25 Python
python函数与方法的区别总结
2019/06/23 Python
keras model.fit 解决validation_spilt=num 的问题
2020/06/19 Python
阿里健康官方海外旗舰店:阿里健康国际自营
2017/11/24 全球购物
Pam & Gela官网:美国性感前卫女装品牌
2018/07/19 全球购物
Pretty Green美国:英式摇滚服饰风格代表品牌之一
2019/01/23 全球购物
成品仓管员工作职责
2013/12/29 职场文书
我的求职计划书
2014/01/10 职场文书
村委会主任先进事迹
2014/01/15 职场文书
高中学生干部学习的自我评价
2014/02/21 职场文书
商场客服专员岗位职责
2014/06/13 职场文书
优秀班组事迹材料
2014/12/24 职场文书
高三数学复习备考教学反思
2016/02/18 职场文书
2019关于垃圾分类处理的调查报告
2019/12/26 职场文书
评测 | 大屏显示带收音机的高端音箱,JBL TUNE2便携式插卡音箱实测
2021/04/24 无线电
浅谈node.js中间件有哪些类型
2021/04/29 Javascript
Matplotlib绘制混淆矩阵的实现
2021/05/27 Python
Python3中最常用的5种线程锁实例总结
2021/07/07 Python