BookInfo.objects.get(id=1)
BookInfo.objects.all()
BookInfo.objects.all().count()
BookInfo.objects.filter(id=1)
包含:contains
BookInfo.objects.filter(btitle__contains='湖')
结尾: endswith
BookInfo.objects.filter(btitle__endswith='部')
isnull 为空是True 不为空False
BookInfo.objects.filter(btitle__isnull=False)
BookInfo.objects.filter(id__in = [1,3,5])
__gt大于
__gte大于等于
__lt小于
__lte小于等于
BookInfo.objects.filter(id__gt = 3)
__year 匹配date日期的年份
BookInfo.objects.filter(bpub_date__year = 1980)
直接等于一个日期格式
BookInfo.objects.filter(bpub_date__gt = '1990-1-1')
使用之前要先导包 from django.db.models import F,Q
F 对象可以实现属性与属性之间的比较
bread(阅读量)__gte(大于等于) = F('bcomment') 评论量
from django.db.models import F,Q
BookInfo.objects.filter(bread__gte = F('bcomment'))
BookInfo.objects.filter(bread__gte = F('bcomment') * 2)
Q对象可以实现MySQL里面的not 、and 、 or
与或非: & | ~
BookInfo.objects.filter(Q(bread__gt=20) & Q(id__lt=3))
导包
from django.db.models import Avg, Count, Sum, Max, Min
使用
# 求和
BookInfo.objects.aggregate(Sum('bread'))
# 求最大值
BookInfo.objects.aggregate(Max('bread'))
# 求最小值
BookInfo.objects.aggregate(Min('bread'))
# 求平均值
BookInfo.objects.aggregate(Avg('bread'))
BookInfo.objects.all().order_by('bread')
倒序
BookInfo.objects.all().order_by('-bread')
人物表添加的外键是书表的主键
b = BookInfo.objects.get(id=1)
b.heroinfo_set.all()
查询人物郭靖所在的书籍
关联模型类__属性名__条件运算符 = 'xxx'
BookInfo.objects.filter(heroinfo__hname='郭靖')
查询图书 书的英雄描述包含 ‘掌’
BookInfo.objects.filter(heroinfo__hdesc__contains = '掌')
直接使用外键
h = HeroInfo.objects.get(id=5)
h.hbook
查询天龙八部里所有有英雄
HeroInfo.objects.filter(hbook__btitle = '天龙八部')
查询阅读量大于等于20的书的所有的英雄
HeroInfo.objects.filter(hbook__bread__gte = 20)