这篇笔记介绍字段的类型 Field Type。

Django 的model 下的 field 对应的是 MySQL 中的表字段,而我们定义的 field 的类型则对应 MySQL 中的字段类型。

本次主要介绍以下几种:

  1. CharField
  2. IntegerField
  3. DateField/DateTimeField
  4. BooleanField
  5. FloatField
  6. TextField
  7. DecimalField

其中,比较重要的 ForeignKey,ManyToMany,OneToOne 类型的我们单开笔记讲解

1、CharField

字符型

对应的是 MySQL 中的 varchar 类型,使用示例如下:

  1. class TestModel(models.Model):
  2. name = models.CharField(max_length=256)

其中,max_length必填属性,用于创建字段的时候确认字段最大长度

字段的其他属性,比如 default,或者 unique 或者 db_index 这些上一篇笔记中提到的属性,都可以根据需要添加。

2、IntegerField

整型

对应的是 MySQL 的 int 类型,使用示例如下:

  1. class TestModel(models.Model):
  2. page = models.IntegerField(default=0)

该字段无必填属性,相关属性可根据需要自行添加。

3、DateField/DateTimeField

分别对应 MySQL 中的 date 和 datetime 类型,使用示例如下:

  1. class TestModel(models.Model):
  2. updated_date = models.DateField()
  3. updated_time = models.DateTimeField(auto_now=True)
  4. created_time = models.DateTimeField(auto_now_add=True)

无必填属性

auto_now:可作为更新时间字段的属性,后续在更改字段数据的时候可不用手动修改该值,系统会自动更新该值为当前时间

auto_now_add:可作为创建时间字段的属性,在某条数据建立之初不用手动填写,系统即为其自动写入当前时间,且后续其他字段的更改不会更改该值

以上两个属性默认为 False

4、BooleanField

对应 MySQL 中的 tinyint 类型,使用示例如下:

  1. class TestModel(models.Model):
  2. is_right = models.BooleanField(default=False)

使用 Django 操作数据,写入这个字段的时候,我们可以写入 0/1,或者 False/True 这两个值。

因为 MySQL 中存入的时候 tinyint 类型的数据,所以其实在 数据库中 这个字段的值是不止 0/1 这两个可选值的,但是如果通过 Django 写入,系统会对写入的数据做规范,仅能写入 0/1 或 False/True,写入其他数据会返回报错。

注: 如果直接操作数据库,是可以写入 0/1 之外的数据的

5、FloatField

对应 MySQL 中的 DOUBLE 类型,使用示例如下:

  1. class TestModel(models.Model):
  2. price = models.FloatField()

6、TextField

对应 MySQL 中的 LONGTEXT 字段,使用示例如下:

  1. class TestModel(models.Model):
  2. text_field = models.TextField()

如果需要存储字符长度比较长的数据,可以使用这个类。

7、DecimalField

对应于 MySQL 中的 decimal 字段,使用示例如下:

  1. class TestModel(models.Model):
  2. decimal_field = models.DecimalField(decimal_places=5, max_digits=20, default=0)

必填参数 为:max_digits、decimal_places

其中,max_digits 为可以储存的最大位数,这个数字必须大于或等于 decimal_places

decimal_places 为与数字一起存储的小数位数

也就是说如果要存储最高为 999.99 的数字,精度为小数点后两位,则为:

  1. models.DecimalField(max_digits=5, decimal_places=2)

一般来说,如果是对精度要求比较严格的情况下,可以使用这个字段类型。

以上就是这篇笔记的全部内容,在接下来几篇笔记中将会介绍 ForeignKey,ManyToMany,OneToOne 也就是外键等字段类型。

原文链接:Django笔记五之字段类型

本文首发于本人微信公众号:Django笔记。

如果想获取更多相关文章,可扫码关注阅读:

Django笔记五之字段类型的更多相关文章

  1. Django中的常用字段类型与参数

    Django中的常用字段类型 1. 数值型 以下都是数值相关的,比如AutoField,它在MySQL中的类型为int(11),而BooleanField在MySQL中对应的类型是tinyint(1) ...

  2. Django文档——Model字段类型(Field Types)

    大部分内容参考自http://wrongwaycn.github.io/django11/topics/db/models/index.html#topics-db-models ,内容是django ...

  3. Django models 的常用字段类型和字段参数

    <1> CharField #字符串字段, 用于较短的字符串. #CharField 要求必须有一个参数 maxlength, 用于从数据库层和Django校验层限制该字段所允许的最大字符 ...

  4. Django中ORM常用字段类型及参数

    常用字段: <1> CharField 字符串字段, 用于较短的字符串. CharField 要求必须有一个参数 maxlength, 用于从数据库层和Django校验层限制该字段所允许的 ...

  5. django中模型详解-字段类型与约束条件

    这片博文来详细说明django模型的使用,涉及到django模型的创建,字段介绍,以及django模型的crud操作,以及一对一等操作. 在使用模型之前,我们首先设置数据库选项,django的默认数据 ...

  6. javascript学习笔记(四) Number 数字类型

    数字格式化方法toFixed().toExponential().toPrecision(),三个方法都四舍五入 toFixed() 方法指定小数位个数  toExponential() 方法 用科学 ...

  7. 字符编码,存储引擎及MySQL字段类型相关知识点

    字符编码,存储引擎及MySQL字段类型相关知识点 一.字符编码 1.在终端输入\s,查看数据库的基本信息(当前用户,版本,编码,端口号) 2.默认的配置文件是my-default.ini 拷贝上述的文 ...

  8. Django ORM中常用的字段类型以及参数配置

    一.数值型 AutoField对应int(11).自增主键,Django Model默认提供,可以被重写. BooleanField对应tinyint(1).布尔类型字段,一般用于记录状态标记. De ...

  9. Django框架:8、聚合查询、分组查询、F与Q查询、ORM查询优化、ORM事务操作、ORM常用字段类型、ORM常用字段参数

    Django 数据库 目录 Django 数据库 一.聚合查询 二.分组查询 三.F查询与Q查询 1.F查询 2.Q查询 3.Q查询进阶操作 四.ORM查询优化 1.only与defer 五.ORM事 ...

  10. Django model字段类型清单

    转载:<Django model字段类型清单> Django 通过 models 实现数据库的创建.修改.删除等操作,本文为模型中一般常用的类型的清单,便于查询和使用: AutoField ...

随机推荐

  1. Linux 使用Bind提供域名解析服务

    DNS域名解析服务 相较于由数字构成的IP地址,域名更容易被理解和记忆,所以我们通常更习惯通过域名的方式来访问网络中的资源.但是,网络中的计算机之间只能基于IP地址来相互识别对方的身份,而且要想在互联 ...

  2. python+pytesseract识别图片文字

    此文只介绍一下python+pytesseract识别一些简单图片的数字,字母和汉字.如图1 import pytesseract from PIL import Image,ImageEnhance ...

  3. egg框架学习笔记

    1.安装 npm i egg-init -g egg-init egg-example --type=simple cd egg-example yarn install npm run dev // ...

  4. Linux软件防火墙iptables

    Netfilter组件 内核空间,集成在linux内核中 官网文档:https://netfilter.org/documentation/ 扩展各种网络服务的结构化底层框架 内核中选取五个位置放了五 ...

  5. 20200926--矩阵转置(奥赛一本通P95 8 多维数组)

    输入一个n行m列的矩阵A,输出它的转置(看下面说明) 输入:第1行包含两个整数n和m(1<=n<=100,1<=m<=100),表示矩阵A的行数和列数.接下来n行,每行m个整数 ...

  6. 第一个程序,Hello,World!

    Hello World 创建一个文件夹,存放代码 新建一个java文件 后缀名为.java 编写代码 public class Hello{    public static void main(st ...

  7. CentOS 7 部署Memcached服务器——超级详细

    操作系统:CentOS 7.x 64位实现目的:安装部署Memcached服务器 一.防火墙设置CentOS 7.x默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭f ...

  8. Monterey 12.3 I225-V有线网卡导致死机或无法使用问题

    问题:升级Monterey12.3后启动到桌面死机 解决方法: 1.关闭/去掉所有有线网卡驱动.补丁.网卡设备ID注入: 2.启动命令中加入:dk.e1000=0: 3.启动不死机后,进入网络设置,手 ...

  9. mybatis的sql操作

    1.Mapper接口创建 创建Mapper包,所有的Mapper接口放在该包下.Mapper接口中声明将要实现的方法,在接下来的Mapper.xml文件中实现对应方法. 2.Mapper.xml创建 ...

  10. css 多行文本展开收起

    <template> <div class="content"> <div :class="[isOpen ? 'text' : 'text ...