django数据库字段类型
字段类型 字段类型指使用Django ORM创建数据库时支持的数据字段类型。
常用字段
(1) AutoField
自增的整型字段,必填参数primary_key=True,则成为数据库的主键,无该字段时,django会自动创建主键id字段。
(2) BigAutoField
一个64位整数,非常类似与AutoField,但是范围是从1~9223372036854775807。
(3) BigIntegerField
一个64位整数,非常类似于IntegerField,不同之处在于保证可以匹配从-9223372036854775808到9223372036854775807。此字段默认表单小部件是TextInput。
(4) BinaryField
一个用于存储原始二进制数据的字段,可以分配bytes,bytearray或memoryview。默认情况下,BinaryField设置editable为False,在这种情况下,他不能包含在ModelForm中,在django2.1中进行了修改:旧版本不允许设置editable为True。有一个额外的可选参数:max_length,字段的最大长度,以字符为单位。最大长度在django的验证中使用强制执行MaxLengthValidator。
(5) BooleanField
一个真假字段,该字段默认表单控件是CheckboxInput或者NullBooleanSelect。当没有设置default值是,BooleanField的值为None。
(6) IntegerField
整数类型字段,数值范围是—2147483648~2147483647.
(7) CharField
字符类型,必须提供max_length参数。代表字符的最大长度。
(8) DateField
日期类型,日期格式为YYYY-MM-DD,相当于python中的datetime.date实例。
参数:
auto_now:每次修改保存修改为当前日期时间,对于“最后修改的” 时间戳有用。在使用Model.save()保存时有效,使用QuerySet.update() 时不会自动更新。
auto_now_add
:新创建对象时自动添加当前日期时间,用于“创建时间”时使用。
auto_now
和auto_now_add
和default
参数是互斥的,不能同时设置。
(9) DatetimeField
日期时间字段,格式为YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ],相当于Python中的datetime.datetime的实例。
(10) DecimalField
固定精度的十进制数字,在python中由Decimal实例表示。有两个必需的参数:max_digits数字允许的最大位数,此数字必须大于或等于decimal_places
。decimal_places
表示与数字一起存储的小数位数。例如:要存最大整数为999,小数为两位的数字,可以使用:
models.DecimalField(max_digits=5, decimal_places=2)
(11) DurationField
一个用于存储时间的字段-用Python在Python中建模timedelta。在PostgreSQL上使用时,使用的数据类型为interval,在Oracle上使用为。否则,将使用微秒。INTERVAL DAY(9) TO SECOND(6)bigint
(12) EmailField
使用EmailValidator检测该字段是否为有效的电子邮箱地址。
(13) FileField
文件上传字段,不支持primary_key参数,使用该参数时将引发错误。
有两个可选参数:
upload_to
:设置上传目录和文件名的方法,并且可以通过两种方法进行设置。将参数附加到MEDIA_ROOT路径中,已形成本地文件系统上将存储上传文件的位置。
storage
:一个存储对象,用于处理文件的存储和检索。
**注意:**在模型中使用FileField或ImageField时,需要执行以下几个步骤:
l 在settings.py
中定义MEDIA_ROOT为django设置存储上载文件的目录的完整路径(这些文件并未直接存储在数据库中,在数据库中只是存储路径)。定义MEDIA_URL为该目录的基本公共URL,确保该目录可由web服务器的用户账号写入。
l 在模型中添加FileField或ImageField字段时,定义upload_to指定MEDIA_ROOT的路径用于上传文件的目录。
l 存储在数据库中的所有文件都是该文件的路径(相对于MEDIA_ROOT)。如果ImageField调用了,则mug_shot可以使用来获取摸板中图像的绝对路径。{undefined{ object.mug_shot.url }}
假入MEDIA_ROOT的设置为’/home/media’,并且upload_to设置为’photos/%Y/%m/%d’。所述**’%Y/%m/%d’** 的部分upload_to被strftime()格式化;’%Y’是四位数的年份,’%m’是两位数的月份,’%d’是两位数的日期。如果在2007年1月15日上传文件,该文件将保存在目录/home/media/photos/2007/01/15中。
l FieldFile.name:
文件名,包括相对路径。
l FieldFile.url
:一个只读属性,访问文件的相对URL。
(14) FloatField
代表在python中由float实例表示的浮点数。
(15) ImageField
继承FileField所有的方法,但还验证上传的对象为有效的图像。除了 可用于特殊属性FileField,一个ImageField也具有height和width 属性。为了便于查询这些属性,ImageField有两个额外的可选参数。在数据库中创建的为varchar列,默认最大长度为100字符。
ImageField.height_field
:每次保存模型实例时,模型字段的名称都会自动填充图像的高度。
ImageField.width_field
:每次保存模型实例时,模型字段的名称都会自动填充图像的宽度。
(16) IntegerField
一个整数。从-2147483648到2147483647.
(17) GenericIPAdressField
字符串格式的IPv4和IPv6地址(如:192.0.2.30或2a02:42fe::4)。默认表单格式为TextInput。
(18) TextField
文本字段。默认表单小部件是Textarea,如果指定max_length属性,将反映在Textarea自动生成的表单字段中。
(19) TimeField
时间,在Python中以datetime.time实例表示。接受与相同的自动填充选项DateField。
(20) URLField
一个CharField一个URL,通过验证 URLValidator。
此字段的默认表单小部件是TextInput。
像所有CharField子类一样,URLField采用可选 max_length参数。如果未指定 max_length,则使用默认值200。
(21) UUIDField
用于存储通用唯一标识符的字段。使用Python的 UUID类。在PostgreSQL上使用时,它存储在uuid数据类型中,否则存储在 中char(32)。
是通用的唯一标识符,可以很好的替代带有的 primary_key的AutoField字段。数据库不会为您生成UUID,因此建议使用default:
import uuidfrom django.db import modelsclass MyUUIDModel(models.Model):id=models.UUIDField(primary_key=True,default=uuid.uuid4,editable=False)
(22) ForeignKey
多对一关系,需要两个位置参数:与模型相关的类和on_delete选项,如果创建地柜关系(一个与自身具有多对一关系的对象)则使用model.ForeignKey(‘self’,on_delete=models.CASCADE)。如果需要在尚未定义的模型上创建关系,则可以使用模型的名称,而不是模型对象本身。如:
from django.db import modelsclass Car(models.Model):manufacturer = models.ForeignKey('Manufacturer',on_delete=models.CASCADE, )class Manufacturer(models.Model):pass
参数:
ForeignKey.on_delete:所有可能的参数都在django.db.models中。当删除由a引用的对象时,Django将模拟on_delete参数指定的SQL约束的行为。例如:如果有一个可为空的字段,并且在删除引用的对象时将其设置为空,如
user = models.ForeignKey( User, models.SET_NULL, blank=**True**, null=**True**,)
**CASCADE:**级联删除。Django会在DELETE CASCADE上模拟 SQL约束的行为,并删除包含ForeignKey的对象。
**DO_NOTHING:**不采取行动。
**PROTECT:**通过引发ProtectedError的子类来防止删引用的对象,是django.db.IntegrityError的子类。
SET_NULL:删除时把外键置为null,当null=True时才可以使用。
SET_DEFAULT:把外键置为默认值,必须要设置默认值时才可以使用。
(23) ManyToManyField
多对多关系表,需要一个位置参数:与模型相关的类,工作原理与ForeignKey完全相同,包括递归和惰性关系。Django会自动创建中间的链接表来表示多对多的关系。
(24) OneToOneField
一对一关系的关系,从概念上与带有unique=True的ForeignKey相似,但是在关系的另一侧(主表数据)直接返回单个对象。
参考文章:https://blog.csdn.net/qq_42486675/article/details/106772211
django数据库字段类型相关推荐
- Django创建数据库(Django数据库字段类型)
创建默认数据库 项目中数据库的配置在 你的项目/settings.py 中 DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3 ...
- 查询时注意 查询字段传值参数类型,尽量和数据库字段类型一致
查询时注意 查询字段传值参数类型,尽量和数据库字段类型一致. 数据量越大查询问题会越严重,到几十万的数据时,类型一致和不一致会是千倍差距 转载于:https://www.cnblogs.com/i60 ...
- golang xorm框架对应pg数据库字段类型参照表
1.左边是golang字段类型,右边是pg数据库字段类型 int integer time.Time timestamp int8 smallint float64 numeric(8,3) (只要是 ...
- java中常见数据库字段类型与java.sql.Types的对应
转自:http://blog.csdn.net/hbzyaxiu520/article/details/5457225 常见数据库字段类型与java.sql.Types的对应 Oracle与java. ...
- mysql中数据库字段类型详解
mysql中数据库字段类型详解 1,blob字段 mysql中blob是一个二进制大型对象,是一个可以储存大量数据的容器,它能容纳不同大小的数据. mysql中blob的四种类型除了存储数据的大小有区 ...
- java.sql.Types,数据库字段类型,java数据类型的对应关系
原文地址为: java.sql.Types,数据库字段类型,java数据类型的对应关系 以下转自:http://kummy.itpub.net/post/17165/172850 本文在原文基础上有增 ...
- 实体类与数据库字段类型
实体类 /*实体类*/ @Column(precision = 12, scale = 3) private BigDecimal rate; //数据库字段类型 rate decimal(12,3) ...
- 数据库字段类型、JDBC类型、Java类型映射关系
数据库字段类型:指的就是数据库字段设置的类型. JDBC类型:java database connector的缩写. 不同的数据库为了能让Java 程序链接并使用数据库, 各个数据库厂商自己提供的驱动 ...
- 数据库字段类型、实体类字段类型、mapper文件jdbcType三者对应关系
数据库字段类型.实体类字段类型.mapper文件jdbcType三者对应关系: 数据库字段类型 实体类字段类型 mapper文件jdbcType bigint Long JdbcType.BIGINT ...
最新文章
- 【js基础】理清Object、Object.prototype、Function、Function.prototype
- OpenCV使用VideoCapture和VideoWriter的实例(附完整代码)
- php prism,漂亮的代码语法高亮库:Prism.js
- FindBugs插件
- 因云而生 | 阿里云发布云服务器操作系统Alinux3
- android5.0 v4a,【图】多图讲解V4A提高G5音效详细步骤(G5音效可以更棒的)
- scrapy.Spider的属性和方法
- Spring官方推荐的@Transactional还能导致生产事故?
- 第一次写博,好激动啊!
- look与look like
- ubuntu下开机自动运行脚本以及定时任务的处理
- mozilla原代码编译
- 服务器哪个位置插网线,服务器网线接线图
- vs201的vc++目录
- 前端学习 -- HtmlCss -- 背景
- Elastic:如何摄入 Websocket 数据到 Elasticsearch
- 通过AD域验证登录Linux系统(Linux安装sssd加入Windows AD域)
- 给小学生科普计算机知识,小学生必懂的15个科普知识
- SpringBoot整合腾讯云COS对象存储实现文件上传
- 《缠中说禅108课》85:逗庄家玩的一些杂史 3
热门文章
- 手把手叫你做ToDoList
- 作业帮上的智能计算机免费用,作业帮推出真人老师“免费答”新功能 打造一站式学习神器...
- Java SpringBoot下载文件超时
- 语言C++之简单C++语言介绍
- 笔记本电脑开机卡住无法正常启动怎么办?
- sox无法播放MP3
- jqgrid列和表头不对齐的问题
- 新点软件登陆科创板:上市首日破发,腾讯、建发股份参与认购
- linux里pwd命令怎么用,linux系统PWD命令的使用
- 3500x架构_7nm架构基因,3500X完胜9400F的法宝