条件查询
参数说明
BookInfo:为图书模型表 id主键, btitle书名, bpup_date出版日期, bread阅读量, bcomment评论量
HeroInfo为英雄模型表 hanme英雄名字, hgender性别, hcomment描述, hbook关联图书表的外键
- 基本查询
get 查询单一结果,如果不存在会抛出模型类.DoesNotExist异常。
all 查询多个结果。
count 查询结果数量。
2.过滤查询
2. filter 过滤出多个结果
3. exclude 排除掉符合条件剩下的结果
4. get 过滤单一结果
过滤条件的表达语法如下:
属性名称__比较运算符=值
# 属性名称和比较运算符间使用两个下划线,所以属性名不能包括多个下划线
5. exact:表示判等。
查询编号为1的图书
BookInfo.objects.filter(id__exact=1)
可简写为:
BookInfo.objects.filter(id=1)
6. 模糊查询
contains:是否包含。(说明:如果要包含%无需转义,直接写即可)
例1:查询书名包含'传'的图书
BookInfo.objects.filter(btitle__contains='传')
例2:startswith、endswith:以指定值开头或结尾。
BookInfo.objects.filter(btitle__endswith='部')
`以上运算符都区分大小写,在这些运算符前加上i表示不区分大小写,如iexact、icontains、istartswith、iendswith.`
7. 空查询
isnull:是否为null。
查询书名不为空的图书
BookInfo.objects.filter(btitle__isnull=False)
8. 范围查询
in:是否包含在范围内。
例:查询编号为1或3或5的图书
BookInfo.objects.filter(id__in=[1, 3, 5])
9. 比较查询
gt 大于 (greater then)
gte 大于等于 (greater then equal)
lt 小于 (less then)
lte 小于等于 (less then equal)
例:查询编号大于3的图书
BookInfo.objects.filter(id__gt=3)
不等于的运算符,使用exclude()过滤器。
BookInfo.objects.exclude(id=3)
10. 日期查询
year、month、day、week_day、hour、minute、second:对日期时间类型的属性进行运算。
例:查询1980年发表的图书。
BookInfo.objects.filter(bpub_date__year=1980)
例:查询1980年1月1日后发表的图书。
BookInfo.objects.filter(bpub_date__gt=date(1990, 1, 1))
条件查询
# 查询id为1的图书
books = BookInfo.objects.get(id=1)
# 查询书名包含'传'的图书
books = BookInfo.objects.filter(btitle__contains='bu') # QuerySet查询集类型
# 查询书名不为空的图书
books = BookInfo.objects.