Django MysqlORM类型大全(已迭代更新)

模型类属性:

属性

描述

AutoField()

一个自动递增的整型字段,添加记录时会自动增长
AutoField 字段通常会用于充当数据表的主键
若模型没有指定主键字段,则Django 自动添加一个 AutoField字段
对应int(11)。自增主键,Django Model默认提供,可以被重写。

BigAutoField(AutoField)

bigint 自增列,必须填入参数 primary_key=True,如果没有写自增列,则会自动创建一个列名为 id 的列

BigIntegerField()

64位整型字段,有符号的长整型,-9223372036854775808 到 9223372036854775807

BinaryField()

二进制数据字段,只能通过 types 对其赋值

BooleanField()

对应tinyint(1)。布尔类型字段,一般用于记录状态标记。<input type = "checkbox">

CharField()

对应varchar。基础的varchar类型。字符串字段,用于较短的字符串,单行输入<input type = "text">

CommaSeparatedIntegerField(CharField)

字符串类型,格式必须为逗号分割的数字,用于存放逗号分隔的整数值,相较与普通的 CharField, 它有特殊的表单数据验证要求

DateField()

日期字段,<input type="text">、一个JavaScript 日期和一个“today” 快捷按键

有两个额外可选参数:

auto_now 当对象被保存时,将该字段的值设置为当前时间

auto_now_add 当对象被首次创建时,将该字段的值设置为当前时间

DecimalField

十进制浮点数
max_digits参数表示总位
decimal_places 参数表示小数位数

DateTimeField()

对应datetime,类似于 DateField,但同时支持于时间的输入

DurationField

存储时间周期,用 Python 的 timedelta 类型构建,长整数,时间间隔,数据库中按照 bigint 存储,ORM 中获取的值为 datetime.timedelta 类型

EmailField()

一个带检查 Email 合法性的CharField,同URLfield一样继承自CharField,多了对email的特殊处理。

FileField()

一个文件上传字段,同URLField一样,它继承自CharField,对了对文件的特殊处理。字符串,路径保存在数据库,文件上传到指定目录参数:upload_to="",上传文件的保存路径;storage=None,存储组件,默认 django.core.files.storage.FileSystemStorage
在定义本字段时传入参数 upload_to,用于保存上载文件的服务器文件系统路径,这个路径必须 包含 striftime formatting, 该格式将上载 文件的 date/time 替换

FilePathField

按目录限制规则选择文件,定义本字段必须传入参数 path ,用于限制目录。
字符串,Django Admin 以及 ModelForm 中提供读取文件夹下文件的功能,参数:path,文件夹路径;

match=None,正则匹配;recursive=False,递归下面的文件夹;allow_files=True,允许文件;allow_folders=False,允许文件夹字符串,Django Admin 以及 ModelForm 中提供读取文件夹下文件的功能,参数:path,文件夹路径;

match=None,正则匹配;recursive=False,递归下面的文件夹;allow_files=True,允许文件;allow_folders=False,允许文件夹

FloatField

浮点型字段,定义本字段时必须传入 max_digits 和decimal_places 参数,用于定义总位数(不包括小数点和符号)和小数位数

GenericIPAddressField(Field)

字符串类型,Django Admin 以及 ModelForm 中提供验证 Ipv4 和 Ipv6

ImageField

类似于 FileField,同时验证上传对象是否是一个合法的图片,有两个可选参数 height_field 和 width_field,如果提供这两个参数,则图片将按照提供的高度和宽度规格保存,该字段要求安装 Python Imaging 库。

ImageField():继承自FileField,用来处理图片相关的数据,在展示上会有所不同。字符串,路径保存在数据库,文件上传到指定目录参数:upload_to="",上传文件的保存路径;storage=None 存储组件,默认 django.core.files.storage.FileSystemStorage;width_field=None,上传图片的高度保存的数据库字段名(字符串);height_field=None,上传图片的宽度保存的数据库字段名(字符串)

IPAddressField(Field)

字符串类型,Django Admin 以及 ModelForm 中提供验证 IPV4 机制。

一个字符串形式的IP地址,例如: 192.23.250.2

IntegerField

用于保存一个整数,对应**int(11) **。同AutoField一样,唯一的差别就是不自增。

MDTextField()

Markdown插件使用方法

ManyToManyField()

integer,多对多关联表,将字段定义在两端中

NullBooleanField()

支持null、true、false三种值,类似于 BooleanField, 但比其多一个None选项

OneToOneField()

integer,一对一关联表

PhoneNumberField

带有美国风格的电话号码校验的 CharField,格式为 XXX-XXX-XXXX

PositiveIntegerField():

同IntegerField,只包含正整数,0 到 2147483647。

PositiveSmallIntegerField(PositiveIntegerRelDbTypeMixin, IntegerField)

正短整型,0 到 32767

RichTextUploadingField()

ckeditor插件使用方法

SlugField(CharField)

只包含字母、数字、下划线和连字符的输入字段。

字符串类型,Django Admin 以及 ModelForm 中提供验证支持 字母、数字、下划线、连接符(减号)

SmallIntegerField()

类似于 IntegerField,对应smallint。小整数时一般会用到。但只具有较小的输入范围,具体范围依赖于所使用的数据库。

对应smallint。小整数时一般会用到。

TextField()

对应longtext。一般用于存放大量文本内容,比如新闻正文、博客正文。大容量文本字段,多行编辑框 <textarea>

TimeField()

对应time,时间格式,HH:MM[:ss[.uuuuuu]],时间字段,类似于 DateTimeField,但只能表达和输入时间

URLField()

继承自CharField,但是实现了对URL特特殊处理。用来存储URL数据,非URL数据可以在业务层就拒绝掉,不会存入数据库中。

字符串类型,Django Admin 以及 ModelForm 中提供验证 URL。

USStateField

美国州名的缩写字段,由两个字母组成

UUIDField()

对应char(32)。除了在PostgreSQL中使用的是uuid类型外,在其他数据库中均是固定长度char(32),用来存放生成的唯一id。字符串类型,Django Admin 以及 ModelForm 中提供对 UUID 格式的验证

XMLField

XML字段,是具有XML合法验证的TextField

模型类属性参数:

参数

描述

blank

针对业务层面,该值是否允许为空。

定义字段是否可以为空,blank 用于字段的HTML表单验证,即判断用户是否可以不输入数据

choices

配置字段的choices后,在admin页面上就可以看到对应的可选项展示。

定义字段的可选值,本字段的值应该是一个包含二维元素的元组,元组的每个元素的第一个值是实际存储的值,第二个值是HTML页面进行选择时显示的值

db_column

默认情况下,定义的field就是对应数据库中的字段名称,通过这个参数可以指定Model中的某个字段对应数据库中的哪个字段。

字段的名称,如果未指定,则使用属性的名称。

db_index

数据库索引,配置若值为True,则在表中会为此字段创建索引

默认False

default

默认值配置,设置默认值,例如: default="please input here"

editable

是否可编辑,默认是True。如果不想这个字段显示在页面上,可以配置为False

error_messages

用来自定义字段值校验失败时的异常提示,它是字典格式。key的值可选项为

help_text

HTML页面中输入控件的帮助字符串。

字段提示语,配置这一项后,在页面对应字段的下方会展示此配置

max_length

定义字符的长度,

例如 : headline = models.CharField(max_length=255)

null

可以同blank进行对比。null用于设定在数据库层面是否允许为空。

定义是否允许相对应的数据库字段为Null,默认设置为 False,是一个数据库中的非空约束

on_delete

on_delete = models.CASCADE删除关联数据的时候,与之的关联也删除

on_delete = models.DO_NOTHING删除关联数据的时候,什么操作也不做

on_delete = models.PROTRCT删除关联数据的时候,引发报错

on_delete = models.SET_NULL删除关联数据的时候,与之关联的只设置为空

on_delete = models.SET_DEFAULT删除关联数据的时候,与之关联的只设置为默认值

on_delete = models.SET删除关联数据

primary_key

主键,一个Model只允许设置一个字段为primary_key

设置一个模型的主键字段,例如:primary_key=true

unique

唯一约束,当需要配置唯一值时,设置unique=True,设置此项后,不需要设置db_index

是否为字段定义数据库的唯一约束

unique_for_date

针对date(日期)的联合约束。比如说一天只能写一篇博文,即:unique_for_date=“博文”

unique_for_month

针对月份的联合约束

unique_for_month

针对年份的联合约束

verbose_name

字段对应的展示文案,注释字段名称

validators

自定义校验逻辑,同form类似

无名参数

可以设置该字段在HTML页面中的人性化名称 例如:

level = models.CharField("请为本条信息评级",max_length=1,choices=LEVELS)

如果不设置本参数,则字段本身将被显示在 HTML 页面中作为输入提示

元选项(Meta类)

abstract:

标识本类是否为抽象基类

True or False

app_label:

定义本类所属的应用

db_table:

映射的数据库表名,例如: db_table=‘moments’

如果在Meta中不提供 db_table 字段,则Django 会为模型自动生成数据表名,生成的格式为“应用名_模型名”,例如:应用app的模型 Comment 的默认数据表名为 app_comment

db_tablespace:

映射的表空间名称

表空间的概念只在某些数据库如 Oracle 中存在,不存在表空间的概念的数据库将忽略此字段

default_related_name:

定义本模型的反向关系引用名称,默认与模型名一致

get_latest_by:

定义按哪个字段值排列以获得模型的开始或结束记录

本属性值通常指向一个日期或整型的模型字段

managed:

True or False

定义 Django的 manage.py 命令行工具是否管理本模型。

默认为 True,若将其设置为 False,则运行 python manage.py migrate 时将不会在数据库中生成本模型的数据表,所以需要手工维护数据库的定义

order_with_respect_to:

定义本模型可以按照某外键引用的关系排序

order:

本模型记录的默认排序字段,可以设置多个字段,默认以升序排列,

若以降序排列则表示要在字段名前加负号("-")

例如:定义 user_name 字段升序 和 pub_date 降序排列

order = ['user_name','-pub_date']

dafault_permissions:

模型操作权限

默认为 default_permisstions=('add','change','delete')

proxy"=:

True or False

本模型及所有继承自本模型的子模型是否为代理模型

required_db_features:

定义底层数据库所必须具备的特性

例如:required_db_features=['gis_enabled']只将本数据模型生成在满足 gis_enabled 特性的数据库中

required_db_vendor:

定义底层数据库类型

比如 SQLite,PostgreSQL,MySQL,Oracle

如果定义了本属性,则模型只能在其声明的数据库中被维护

unique_together:

用来设置的不重复的字段组合,必须唯一(可以将多个字段做联合唯一)

例如:unique_together = (("user_name","pub_date"),)

定义了每个 user_name 在同一个 pub_date 中只能有一条数据表记录

因为 unique_together 本身是一个元组,所以可以设置多个这样的唯一约束

index_together:

定义联合索引的字段,可以设置多个

例如:index_together = [["pub_date","deadline"],]

verbose_name:

指明一个易于理解和表述的单数形式的对象名称。如果这个值没有被设置,则Django将会使用该model的类型的分词形式作为它的对象表述名,即 CamelCase 将会被转换为camel case

verbose_name_plural:

指明一个易于理解和表述的复数形式的对象名称

查询模型类.objects.属性

函数名

功能

返回值

说明

get

返回表中满足条件的一条且只能有一条数据

返回值是一个模型类对象

参数中写查询条件

  1. 如果查到多条数据,则抛异常MultipleObjectsReturned
  2. 查询不到数据,则抛异常:DoesNotExist

all

返回模型类对应表格中的所有数据

返回值是QuerySet类型

查询集

filter

返回满足条件的数据

返回值是QuerySet类型

参数写查询条件

exclude

返回不满足条件的数据

返回值是QuerySet类型

参数写查询条件

order_by

对查询结果进行排序

返回值是QuerySet类型

参数中写根据哪些字段进行排序

降序:字段前加 ‘-’号

1、比较查询

gt:大于           lt:小于     gte:大于等于           lte:小于等于

2、日期查询

year年:bpub_date__year=2022

month月:bpub_date__month=5

day日:bpub_date__gt=date(2022,05,05)

3、exclude 不等于 :exclude(id=5)

4、order_by 排序

(1)order_by('id')

id 从大到小进行排序

(2)order_by('-id')

5、Q对象:查询条件之间的逻辑比较

(1)且 & (查询 id>5 并且年龄 大于50 的职工):filter(sid__gt=5,bread__gt=50)

(2)等效:filter(Q(sid__gt=5)&Q(bread__gt=50))

(3)或 | (查询 id>5 或者 阅读量>50 的女性):.filter(Q(sid__gt=5)|Q(bread__gt=50))

(4)非 ~ (查询 id 不等于5 的图书):filter(~Q(sid=5))

6、聚合: 对查询结果进行聚合操作

使用aggregate()函数来使用聚合,返回是 字典

1、sum 求和:UserInfo.objects.all().aggregate(Sum('number'))

2、count 统计:UserInfo.objects.all().aggregate(Count('sid')

3、统计 id>3 的所有图书的数目:BookInfo.objects.filter(sid__gt=3).count()

4、avg 求平均值

5、max 求最大值

6、min 求最小值

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值