一、数值型

  • 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只是在表单验证的时候会检测你是否可以为空

Django ORM中常用的字段类型以及参数配置的更多相关文章

  1. django的Model 模型中常用的字段类型

    常用的字段类型: AutoField:自增长字段,通常不用,如果未在Model中显示指定主键,django会默认建立一个整型的自增长主键字段 BooleanField:布尔型,值为True或False ...

  2. Django模型类之models字段类型和参数以及元数据meta

    models之字段类型和参数 示例: # class Test(models.Model): # courses_test # """测试学习用""& ...

  3. Django ORM中常用字段和参数

    一些说明: 表myapp_person的名称是自动生成的,如果你要自定义表名,需要在model的Meta类中指定 db_table 参数,强烈建议使用小写表名,特别是使用MySQL作为后端数据库时. ...

  4. Django ORM中datetiem数据类型字段无法对比处理办法

    在做商城项目中浏览足迹时,我利用浏览商品的ID和浏览的时间保存到browse表中,然后在我的足迹页面根据最近日期进行展示 条件:每天/个商品只能如一次表 后台代码如下: #存储浏览足迹到browse表 ...

  5. ORM中聚合函数、分组查询、Django开启事务、ORM中常用字段及参数、数据库查询优化

    聚合函数 名称 作用 Max() 最大值 Min() 最小值 Sum() 求和 Count() 计数 Avg() 平均值 关键字: aggregate 聚合查询通常都是配合分组一起使用的 关于数据库的 ...

  6. day07 ORM中常用字段和参数

    day07 ORM中常用字段和参数 今日内容 常用字段 关联字段 测试环境准备 查询关键字 查看ORM内部SQL语句 神奇的双下划线查询 多表查询前提准备 常用字段 字段类型 AutoField in ...

  7. Django ORM 中的批量操作

    Django ORM 中的批量操作 在Hibenate中,通过批量提交SQL操作,部分地实现了数据库的批量操作.但在Django的ORM中的批量操作却要完美得多,真是一个惊喜. 数据模型定义 首先,定 ...

  8. 优化Django ORM中的性能问题(含prefetch_related 和 select_related)

    Django是个好工具,使用的很广泛. 在应用比较小的时候,会觉得它很快,但是随着应用复杂和壮大,就显得没那么高效了.当你了解所用的Web框架一些内部机制之后,才能写成比较高效的代码. 怎么查问题 W ...

  9. ORACLE常用数据库字段类型

    ORACLE常用数据库字段类型   常用的数据库字段类型如下:   字段类型 中文说明 限制条件 其它说明  CHAR 固定长度字符串 最大长度2000 bytes     VARCHAR2 可变长度 ...

随机推荐

  1. Python 基础之import导包

    首先需要将import内容建立一个大概如下层级的包: 以黑色框为第一级,蓝色框为第二级,棕色框为第三级,红色框为第四级 一.import 引入初识 首先在module.py写入代码如下: xboy = ...

  2. ypeError: __init__() got an unexpected keyword argument 'shape'

    采用TensorFlow支持通过tf.Graph函数来生成新的向量图,代码如下: import tensorflow as tf g1 = tf.Graph() with g1.as_default( ...

  3. java编程,通过代理服务器访问外网的FTP

    有些时候我们的网络不能直接连接到外网, 需要使用http或是https或是socket代理来连接到外网, 这里是java使用代理连接到外网的一些方法, 希望对你的程序有用.方法一:使用系统属性来完成代 ...

  4. Kubernetes 深入学习(一) —— 入门和集群安装部署

    一.简介 1.Kubernetes 是什么 Kubernetes 是一个全新的基于容器技术的分布式架构解决方案,是 Google 开源的一个容器集群管理系统,Kubernetes 简称 K8S. Ku ...

  5. 《React后台管理系统实战 零》:基础笔记

    day01 1. 项目开发准备 1). 描述项目 2). 技术选型 3). API接口/接口文档/测试接口 2. 启动项目开发 1). 使用react脚手架创建项目 2). 开发环境运行: npm s ...

  6. 谁说5G网络无敌?第六代Wi-Fi表示不服

    导读 随着第五代移动通信技术(5G)正式商用,同属第五代的Wi-Fi技术(802.11ac)的处境就非常尴尬了,除了不存流量费用外,无论是网速.设备连接数还是网络延迟,5G都拥有秒杀802.11ac的 ...

  7. 二、点击导出按钮创建excle写入内容后下载功能实现

    /*涉及的jar包1)biframework.jar用于实现分页功能2)poi-3.7-20101029.jar:读取.创建.修改excle.word.ppt的Java APIApache POI是创 ...

  8. IDEA配置数据库连接失败的问题

    今天采用IDEA连接数据库失败了,有几个问题需要注意 首先笔者采用的数据库版本为8.0.17而IDEA自带版本是5.2.26大概,于是首先出现的问题是驱动不匹配,那么就需要换成我自己的版本,配置如下 ...

  9. java中将图片上传到配置好的ftp服务器上

    测试用例: @Test public void testFtp() throws Exception { //1.连接ftp服务器 FTPClient ftpClient = new FTPClien ...

  10. 使用 MYSQLBINLOG 来恢复数据

    使用 MYSQLBINLOG 来恢复数据 2009-04-05 12:47:05 标签:mysql mysqlbinlog 恢复 数据库 数据 原创作品,允许转载,转载时请务必以超链接形式标明文章 原 ...