1.有多条结果的
all() 获取所有的结果
filter(条件) 按照条件筛选数据
exclude(条件) 筛选出满足条件以外的数据
2.有单个结果的
first() 获取结果集的第一个
last() 获取结果集的最后一个
get() 获取一个结果, 注意: 有且只有一个结果的时候使用get()才可以,如果结果超过一个或者没有,程序都出错
3.其他
count() 获取结果集的数量
order_by("-属性名") 表示按照属性名对应的值排序, 默认是升序, -属性名表示降序排序
如果是字符类型的数据,是按照字符对应的码表来排序的,一个字符一个字符的的比较,如: "aac" "abc" ,"aac"小,
exists() 判断查询结果集中是否有数据
values() 获取结果集的数据,该数据是类似字典的形式,方便操作
4.条件中的运算符
格式: 属性名__运算符=值 是2个下划线
运算符:
gt 大于
gte 大于等于
lt 小于
lte 小于等于
= 等于 exact
不等于 exclude(条件)
isNull 是空的数据
startwith 查询以某个字符开始
endwith 查询以某个字符结尾的
contain 查询包含某个字符的
istartwith i 是ignore的简写, 忽略大小写查询
iendwith
icontain
in 成员运算符, 是否是集合中值的其中一个,满足一个就符合条件
特使用法** pk=值 pk是主健的简写
5.Q与F对象
1.Q对象, 用来帮助实现 逻辑运算符
& 且 如: ...filter(Q(p_age__gt=90)&Q(p_age__lt=95)) 注意导包
| 或 如: ....filter(Q(p_name="三胖胖40") | Q(p_name="三胖胖61"))
~ 非 如: ....filter(~Q(p_age__lte=100))
2.F 对象, 用来帮助自己的属性与自己的属性比较
如:
# 需求:实现年龄比id小的数据
persons = Person.objects.filter(p_age__lt=F("id"))
6.查询结果的切片
格式: 结果集[start:stop] 包前不包后 截取从start位置到stop位置的数据
7.聚合函数的使用
Max
Min
Avg
Sum
注意: 1.大小写 2.注意到包
如:
# 求年龄最大的
# res = Person.objects.all().aggregate(Max("p_age"))
res = Person.objects.all().aggregate(Min("p_age"))