基本条件查询
1.查询id为1的书籍
BookInfo.objects.filter(id=1)
2.查询书名包含‘湖’的书籍 (like %湖%)
BookInfo.objects.filter(btitle__contains=‘湖’)
3.查询书名以‘部’结尾的书籍 (endswith 、startswith)(like %部)
BookInfo.objects.filter(btitle__endswith=‘部’)
4.查询书名不为空的书籍 (双重否定代表肯定)
BookInfo.objects.filter(btitle__isnull=False)
5.查询编号为2或4的书籍 (选项,要么2要么4) (不是区间)
BookInfo.objects.filter(id__in=[2,4])
6.查询编号大于2的书籍 (大于:gt)(小于:lt)(大于等于:gte)(小于等于:lte)
BookInfo.objects.filter(id__gt=2)
7.查询id不等于3的书籍 (exclude查询满足条件以外的数据) (filter查询满足条件的数据)
BookInfo.objects.exclude(id=3)
8.查询1980年发表的书籍
BookInfo.objects.filter(bpub_date__year=‘1980’)
9.查询1990年1月1日后发表的书籍
BookInfo.objects.filter(bpub_date__gt=date(1990,1,1))
10.按照阅读量进行排序查询
正序(从小到大):
BookInfo.objects.all().order_by(‘bread’)
倒序:
BookInfo.objects.all().order_by(’-bread’)
########################################################
F对象
1.查询阅读量大于评论量的书籍
BookInfo.objects.filter(bread__gt=F(‘bcomment’))
2.查询阅读量大于2倍评论量的书籍
BookInfo.objects.filter(bread__gt=F(‘bcomment’)*2)
########################################################
Q对象
1.查询阅读量大于20,或编号小于3的图书
BookInfo.objects.filter(Q(bread__gt=20) | Q(id__lt=3))
2.查询编号不等于3的书籍
BookInfo.objects.filter(~Q(id=3))
########################################################
聚合函数
1.统计总的阅读量
BookInfo.objects.aggregate(Sum(‘bread’))
########################################################
基础关联查询
1.一查多:查询编号为1的图书中所有人物信息
book = BookInfo.objects.get(id=1)
book.heroinfo_set.all()
2.多查一:查询编号为1的英雄出自的书籍
hero = HeroInfo.objects.get(id=1)
hero.hbook
########################################################
关联过滤查询
1.多查一:查询书籍中人物的描述包含"降龙"的书籍
BookInfo.objects.filter(heroinfo__hcomment__contains=‘降龙’)
2.一查多:查询书名为"天龙八部"的所有人物信息
HeroInfo.objects.filter(hbook__btitle=‘天龙八部’)
from django.db.models import Q
def index(request):
a=models.Company.objects.filter(Q(num__gt=20)|Q(name__contains=‘小’)).order_by(’-time’)
for x in a:
print(x.name)
return HttpResponse(‘123’)