简单了解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 相关文章推荐
Python2.x和3.x下maketrans与translate函数使用上的不同
Apr 13 Python
Python正则表达式教程之一:基础篇
Mar 02 Python
Python简单实现Base64编码和解码的方法
Apr 29 Python
pandas 数据归一化以及行删除例程的方法
Nov 10 Python
对python pandas 画移动平均线的方法详解
Nov 28 Python
python3 自动识别usb连接状态,即对usb重连的判断方法
Jul 03 Python
django的ORM操作 删除和编辑实现详解
Jul 24 Python
python正则-re的用法详解
Jul 28 Python
Pandas对DataFrame单列/多列进行运算(map, apply, transform, agg)
Jun 14 Python
Python计算信息熵实例
Jun 18 Python
python 第三方库paramiko的常用方式
Feb 20 Python
一行代码python实现文件共享服务器
Apr 22 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中的一个中文字符串截取函数
2007/02/14 PHP
PHP url 加密解密函数代码
2011/08/26 PHP
PHP 前加at符合@的作用解析
2015/07/31 PHP
PHP文字转图片功能原理与实现方法分析
2017/08/31 PHP
js multiple全选与取消全选实现代码
2012/12/04 Javascript
JS性能优化笔记搜索整理
2013/08/21 Javascript
javascript模块化是什么及其优缺点介绍
2013/09/02 Javascript
使用js写的一个简易的投票
2013/11/27 Javascript
js实现仿MSN带关闭功能的右下角弹窗代码
2015/09/04 Javascript
JavaScript事件学习小结(一)事件流
2016/06/09 Javascript
jquery 实现回车登录详解及实例代码
2016/10/23 Javascript
微信小程序 倒计时组件实现代码
2016/10/24 Javascript
关于json字符串与实体之间的严格验证代码
2016/11/10 Javascript
bootstrap table实现单击单元格可编辑功能
2017/03/28 Javascript
基于JS对象创建常用方式及原理分析
2017/06/28 Javascript
解决jquery的ajax调取后端数据成功却渲染失败的问题
2018/08/08 jQuery
python之wxPython应用实例
2014/09/28 Python
手动实现把python项目发布为exe可执行程序过程分享
2014/10/23 Python
Python3实现Web网页图片下载
2016/01/28 Python
Python3利用SMTP协议发送E-mail电子邮件的方法
2017/09/30 Python
Python反射用法实例简析
2017/12/22 Python
Python编程argparse入门浅析
2018/02/07 Python
dataframe设置两个条件取值的实例
2018/04/12 Python
如何使用Python 打印各种三角形
2019/06/28 Python
python、Matlab求定积分的实现
2019/11/20 Python
Python:二维列表下标互换方式(矩阵转置)
2019/12/02 Python
python 的numpy库中的mean()函数用法介绍
2020/03/03 Python
Python DES加密实现原理及实例解析
2020/07/17 Python
中国一家专注拼团的社交购物网站:拼多多
2018/06/13 全球购物
库房主管岗位职责
2013/12/31 职场文书
汽车技术服务英文求职信范文
2014/01/02 职场文书
运动会演讲稿200字
2014/08/25 职场文书
绵山导游词
2015/02/05 职场文书
班主任培训研修日志
2015/11/13 职场文书
导游词之岳阳楼
2019/09/25 职场文书
springboot 多数据源配置不生效遇到的坑及解决
2021/11/17 Java/Android