django-7-django模型系统
程序员文章站
2022-03-04 10:13:14
<<<常用的模型字段类型>>>https://docs.djangoproject.com/en/2.1/ref/models/fields/#field-types InterField CharFiled TestFiled DateFiled AutoFiled(primary_key=Tru ......
<<<常用的模型字段类型>>>
https://docs.djangoproject.com/en/2.1/ref/models/fields/#field-types
https://docs.djangoproject.com/en/2.1/ref/models/fields/#field-types
interfield
charfiled
testfiled
datefiled
autofiled(primary_key=true)自增,不指定主键会自动创建
charfiled
testfiled
datefiled
autofiled(primary_key=true)自增,不指定主键会自动创建
在使用的时候何以设置datefield.auto_now每次自动保存对象的时候自动设置改字段为当前时间,设置datefield.auto_now_add当对象第一次被创建时自动设置当前时间
datetimefiled
datetimefiled
<<<常用的字段参数>>>
https://docs.djangoproject.com/en/2.1/ref/models/fields/#field-options
https://docs.djangoproject.com/en/2.1/ref/models/fields/#field-options
primary_key
auto_dreated
unique指定是否为唯一
auto_now
auto_dreated
unique指定是否为唯一
auto_now
<<<常用查询>>>
通过模型类上的管理器来构造
模型类上的管理器(class.objects)
通过模型类上的管理器来构造
模型类上的管理器(class.objects)
queryset (惰性,,没有操作数据库)表示数据库中对象的集合,等同于select 语句
query 获取mysql 语句
query 获取mysql 语句
first() 获取第一条,返回对象
last() 获取最后一条,返回对象
get(**kwargs) 根据给定的条件获取一个对象,如果有多个对象符合则报错
all() 获取所有记录
filter(**kwargs) 根据给定的条件获取过滤后的queryset,多个条件用','连接
exclude(**kwargs) 作用和filter相反,去除不符合条件的对象
last() 获取最后一条,返回对象
get(**kwargs) 根据给定的条件获取一个对象,如果有多个对象符合则报错
all() 获取所有记录
filter(**kwargs) 根据给定的条件获取过滤后的queryset,多个条件用','连接
exclude(**kwargs) 作用和filter相反,去除不符合条件的对象
多条件的or连接
from django.db.models import q
q(age=1) | q(age=0)
from django.db.models import q
q(age=1) | q(age=0)
返回某个字段
values(*fileds) field指定字段,返回一个queryset,返回一个‘字典列表’
only(*fields) 与values差不多,返回queryset,‘对象列表’,必须带上主键
defer(*field) 和only功能相反,用法一样,返回一个queryset,对象列表,排除
values(*fileds) field指定字段,返回一个queryset,返回一个‘字典列表’
only(*fields) 与values差不多,返回queryset,‘对象列表’,必须带上主键
defer(*field) 和only功能相反,用法一样,返回一个queryset,对象列表,排除
排序
order_by(*fields) 根据给定的字段来排序
如果要反序就在field前加'-'
order_by(*fields) 根据给定的字段来排序
如果要反序就在field前加'-'
切片 和python切片用法相似,不支持复索引,数据大的时候不用步长
***切片后不再支持附加条件与排序
***切片后不再支持附加条件与排序
*多字段排序有什么用?*
常用查询条件
> < =
通过'__' 使用
exact 默认等于
iexact 不区分大小写的匹配
contains
icontains 不区分大小写
in name__in = ['aa','ss','dd']
range age__range = (18, 20)
gt 大于
gte 大于等于
lt
lte
startswith
istartswith
endswith
iendswith
isnull true false
> < =
通过'__' 使用
exact 默认等于
iexact 不区分大小写的匹配
contains
icontains 不区分大小写
in name__in = ['aa','ss','dd']
range age__range = (18, 20)
gt 大于
gte 大于等于
lt
lte
startswith
istartswith
endswith
iendswith
isnull true false
聚合
django.db.models import count, avg, max , min, sum(通过管理器的aggregate方法)
django.db.models import count, avg, max , min, sum(通过管理器的aggregate方法)
count 计数
平均 aggregate(age_avg = avg('age'))
平均 aggregate(age_avg = avg('age'))
分组
查询男生有几个,女生有几个
结合 values , annotate(num = count('sex'))
查询男生有几个,女生有几个
结合 values , annotate(num = count('sex'))
**复杂查询**
from django.db.models.functions import lower
from django.db.models.functions import lower
order_by(lower('name').desc())
上一篇: CSS(下)
下一篇: JavaScript(一)
推荐阅读
-
ipad清除缓存和释放系统自动产生的其它容量方法
-
利用PowerDesigner15在win7系统下对MySQL 进行反向工程(上) 安装驱动篇
-
CentOS系统下修改键盘映射的方法
-
利用PowerDesigner15在win7系统下对MySQL 进行反向工程(下)完成
-
详解iOS应用UI开发中的九宫格坐标计算与字典转换模型
-
abp(net core)+easyui+efcore实现仓储管理系统——EasyUI之货物管理五 (二十三)
-
abp(net core)+easyui+efcore实现仓储管理系统——EasyUI之货物管理八(二十六)
-
微软Windows 10X细节:全新系统、体验更流畅
-
给苹果装Windows 教你做苹果电脑双系统:看完自己随便装
-
IE存在严重漏洞:微软停止Windows 7等系统安全更新