django 判断语句

模型

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原文:https://my.oschina.net/liuyuantao/blog/751438 查询集API 参...
    阳光小镇少爷阅读 9,245评论 0 8
  • ORM 映射关系:表名 <-------> 类名字段 <-------> 属性表记录 <------->类实例...
    lkning阅读 3,328评论 0 0
  • 元选项  在模型类中定义类 Meta,用于设置元信息 元信息db_table:定义数据表名称,推荐使用小写字母...
    流蓝浅阅读 3,214评论 0 0
  • Django ORM用到三个类:Manager、QuerySet、Model。Manager定义表级方法(表级方法...
    廖马儿阅读 10,134评论 1 4
  • 网络爬虫的君子协议 网络爬虫的尺寸 网络爬虫引发的问题 性能骚扰 法律风险 隐私泄露 网络爬虫的"性能骚扰"web...
    若与阅读 33,800评论 2 43