django 判断语句

2018-04-13  本文已影响0人  木头的男人

模型

1、判断(判等) exact

查询编号为1的图书

BookInfo.book.filter(id=1)

BookInfo.book.filter(id__exact=1)

注意:exact可以省略

2、模糊查询

查询书名包含"传"的图书 contains

BookInfo.book.filter(btitle__contains='传')

查询书名以"射"开头

BookInfo.book.filter(btitle__startswith='射')

查询书名以狐结尾的

BookInfo.book.filter(btitle__endswith='狐')

3、空值查询 isnull

查询书名不为空的图书

BookInfo.book.filter(btitle__isnull=False)

4、范围查询 where id in (1,3,5)

查询编号为1或3或者5的图书

BookInfo.book.filter(id__in=[1,3,5])

5、比较查询 gt lt(less than) gte lte

查询编号大于等于3的图书

BookInfo.book.filter(id__gte=3)

6、日期查询

查询1980年发表的书

BookInfo.book.filter(bpub_date__year=1980).values()

查询1980年1月1日后发表的图书有几本书

BookInfo.book.filter(bpub_date__gt = date(1980,1,1)).count()

7、exclude:返回不满足条件的数据 --->filter取反

查询所有id不为3的图书有多少本

BookInfo.book.exclude(id=3).count()

F对象

查询图书阅读量大于评论量的图书信息

BookInfo.book.filter(bread__gt = F('bcomment'))

查询图书阅读量大于2倍的评论量的图书信息

BookInfo.book.filter(bread__gt = F('bcomment')*2)

Q对象

查询id大于3且阅读量大于30的图书信息

方案1、

BookInfo.book.filter(id__gt=3,bread__gt=30)

方案2

BookInfo.book.filter(Q(id__gt=3)&Q(bread__gt=30))

查询id大于3或者阅读量大于30的图书信息

BookInfo.book.filter(Q(id__gt=3)|Q(bread__gt=30))

查询id不等于3图书的信息

BookInfo.book.filter(~Q(id=3))

"负负得正"

BookInfo.book.exclude(~Q(id=3)).values()

order_by

查询所有图书的信息,按照id从小到大进行排序。

BookInfo.book.all().order_by('id').values()

查询所有图书的信息,按照id从大到小进行排序。

BookInfo.book.all().order_by('-id').values()

把id大于3的图书信息按阅读量从大到小排序显示;

BookInfo.book.filter(id__gt=3).order_by('-bread')

聚合函数

查询所有图书的数目 select count(*) from booktest_bookinfo;

BookInfo.book.aggregate(Count('id'))

查询所有图书阅读量的总和

BookInfo.book.aggregate(Sum('bread'))

统计id大于3的所有图书的数目

BookInfo.book.filter(id__gt=3).aggregate(Count('id'))

显示阅读量最大的书的书名

BookInfo.book.all().order_by('-bread')[0]

查询相关函数返回值总结

get:返回一个对象all:QuerySet(也就是[])
filter:QuerySet

exclude:QuerySet

order_by:QuerySet aggregate:字典count:值

通过对象执行关联查询

查询图书id为1的所有英雄信息

b = BookInfo.book.get(id=1) b.heroInfo_set.all()

查询id为1的英雄所属图书信息

h = HeroInfo

格式:

1.由一类的对象查询多类的时候:一类的对象.多类名小写_set.all() #查询所用数据

2.由多类的对象查询一类的时候:多类的对象.关联属性 #查询多类的对象对应的一类的对象

3.由多类的对象查询一类对象的id时候:多类的对象. 关联属性_id

上一篇下一篇

猜你喜欢

热点阅读