简单了解Django ORM常用字段类型及参数配置
作者:子钦加油 发布时间:2022-11-03 09:11:38
这篇文章主要介绍了简单了解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只是在表单验证的时候会检测你是否可以为空
来源:https://www.cnblogs.com/zmdComeOn/p/12157139.html


猜你喜欢
- 现状≠将来?程序员做设计本身就很悲哀,纠结于客户与坚持之间就更是如此。无论我今后的路会怎么走,我想始终不变的事情就是与客户博弈了。无论是放弃
- Scrapy是什么?先看官网上的说明,http://scrapy-chs.readthedocs.io/zh_CN/latest/intro
- Cookie 对象是一种以文件(Cookie文件)的形式保存在客户端硬盘的Cookies文件夹中的数据信息(Cookie数据)。Cookie
- 支持按照文件夹去批量处理,也可以单独一个文件进行处理,并且可以自定义标识符最近在开发一个答题类的小程序,到了录入试题进行测试的时候了,发现一
- 概念softmax函数是常用的输出层函数,常用来解决互斥标签的多分类问题。当然由于他是非线性函数,也可以作为隐藏层函数使用反向传播求导可以看
- Tensorflow内置了许多数据集,但是实际自己应用的时候还是需要使用自己的数据集,这里TensorFlow 官网也给介绍文档,官方文档。
- 1、索引优化1.1 建表或加索引时,保证表里互相不存在冗余索引。对于MySQL来说,如果表里已经存在key(a,b),则key(a)为冗余索
- 有时候我们不希望浏览器使用缓存加快网页的显示,尤其是那些论坛之类的频繁更新内容的网页,在网上有说可以使用下面的方法来屏蔽缓存,但是我试了效果
- 这是fenye.asp具体代码:以下是引用片段:<%Const maxPagesize=1000 '设置分
- Python语法基础01-Python快速入门U1-定义变量直接定义 不用指明变量类型e.g:a=10U2-判断语句#coding=utf-
- Powerdesigner界面-tools-Resources-DBMS,点击左上角的New,选择copy from templete,如果
- 最近在学习Python的时候遇到一个知识点,在此记录下来可变参数会自动填充前面的同名默认参数比如下面这个函数def add_student(
- watch监听不到对象内部的变化有的时候vue会出现这种现象,无法监听到复杂对象内部的变化:当对象里面原本有某一个属性,并对这个属性操作时,
- FTP即文件传输协议;它基于客户机-服务器模型体系结构,应用广泛。它有两个通道:一个命令通道和一个数据通道。命令通道用于控制通信,数据通道用
- 这十则CSS技巧汇编于网络,作为老手已经司空见惯了,也没有什么新意,但温故而知新,或许阅读一遍也有一定的启发,本文主要面对CSS新手朋友,有
- 从文件中读取数据读取整个文件这里假设在当前目录下有一个文件名为'pi_digits.txt'的文本文件,里面的数据如下:3.
- 前言使用python做一个加密资料的软件,可加密应用程序、文件、压缩包等多种文件格式,不可直接加密文件夹,可以先用压缩包打包在加密。加密后的
- Mysql 远程连接配置实现的两种方法大家在公司工作中,经常会遇到mysql数据库存储于某个人的电脑上,大家要想连接mysql服务,装有my
- 一、效果展示文件上传和展示:文件搜索:文件下载:删除文件:二、关键代码#urls.pyfrom django.urls import pat
- 总的来说:1、数据库设计和表创建时就要考虑性能2、sql的编写需要注意优化3、分区、分表、分库设计表的时候:1、字段避免null值出现,nu