一 简介:今天学习models查询的一些东西

二 理解概念

Queryset

定义 从数据库中查询出来的结果一般是一个集合,这个集合叫做 QuerySet

三 细节学习

一 常用的models函数

.all() 全表
.filter() 过滤
.exclude() 排除
.values() 指定值(字典)
.values_list() 指定值(元组 )
.order_by()排序
.exits() 是否存在
.update() 更新
.delete() 删除
.distinct() 去重
.union()联合
.count() 统计
.create()存储

二 全表查询
userinfo.objects.all().values('username') 返回值 某个字典 类似 [{'username': u'chenc'}, {'username': u'zan'}】
userinfo.objects.all().values_list('username') 返回值 某个元祖 [(u'chenc',), (u'zan',), (u'zhangsan',)] .values_list() 也可以添加多个字段
三 范围查询
models.Tb1.objects.filter(id__lt=10, id__gt=1) 查询 1-10
models.Tb1.objects.filter(id__in=[11, 22, 33]) 查询 in
models.Tb1.objects.exclude(id__in=[11, 22, 33]) 查询 not in
models.Tb1.objects.filter(id__range=[1, 2]) 查询between and
models.Tb1.objects.filter(name='seven').order_by('id') 排序('id') 升序 ('-id') 降序
四 多条件查询
1 链式查询

models.Tb1.objects.filter().filter()

2 传Q对象,构造搜索条件

Q(question__startswith='Who') | Q(question__startswith='What')  or关系

Q(question__startswith='Who') ,Q(question__startswith!='What')  and关系

注意 1 Q参数必须要在具体值参数之前

News.objects.get(Q(pub_date=date(2005, 5, 2)) | Q(pub_date=date(2005, 5, 6)),question__startswith='Who')

2 Q对象使用之前要先导入

from django.db.models import Q

推荐使用方案2

五 查询条件构成
models.Tb1.objects.filter(字段名__相应函数=value).函数()

六 get和filter区别

输入参数
get的参数只能是model中定义的那些字段,只支持严格匹配,唯一一条记录
filter的参数可以是字段,也可以是扩展的where查询关键字,如in,like等

返回值
get返回值是一个定义的model对象
filter返回值是一个新的QuerySet对象,然后可以对QuerySet在进行查询返回新的QuerySet对象,支持链式操作
QuerySet一个集合对象,可使用迭代或者遍历,切片等,但是不等于list类型(使用一定要注意)

template

get   get.name

filter  for i in filter

i.name

endfor

七 总结
通过以上我们知道,熟知两部分相应的函数能使我们快速的进行数据查询,可以参考官方文档

 

django学习~models之查询的更多相关文章

  1. Django开发之路 二(django的models表查询)

    django的models表查询 一.单表查询 (1) all(): 查询所有结果 # 返回的QuerySet类型 (2) filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 #返 ...

  2. django的models模块查询方法

    假定models中有一个类BookInfo 模块查询不同于sql语句,模块查询的结果会返回符合条件的整个一行的对象,或者多个对象组成的查询集. 查询集类似列表,有相似的方法. 1 model查询语句: ...

  3. django学习-15.ORM查询方法汇总

    1.前言 django的ORM框架提供的查询数据库表数据的方法很多,不同的方法返回的结果也不太一样,不同方法都有各自对应的使用场景. 主要常用的查询方法个数是13个,按照特点分为这4类: 方法返回值是 ...

  4. 八、django学习之分组查询、F查询和Q查询

    分组查询.F查询和Q查询 分组查询 统计每个出版社出版的书籍的平均价格 第一种方式 obj = models.Book.objects.values('publishs_id').annotate(a ...

  5. 六、Django学习之基于下划线的跨表查询

    六.Django学习之基于下划线的跨表查询 一对一 正向查询的例子为 已知用户名,查询用户的电话号码.反向查询例子反之. 正向查询 其中下划线前的表示表名,无下划线的表示的是Author表 resul ...

  6. 五、Django学习之基于对象的跨表查询

    五.Django学习之基于对象的跨表查询 正向与反向查询 关键在于ForeignKey字段写的位置.例如下面这段代码, 关系属性(字段)写在哪个类(表)里面,从当前类(表)的数据去查询它关联类(表)的 ...

  7. Django 学习 之ORM聚合查询分组查询与F查询与Q查询

    一.聚合查询和分组查询 1.聚合查询aggregate 关于数据表的数据请见上一篇:Django 学习 之ORM多表操作(点我) aggregate(*args, **kwargs),只对一个组进行聚 ...

  8. Django学习笔记之Models与ORM操作

    一.ORM增加 from django.db import models class Publisher(models.Model): name = models.CharField(max_leng ...

  9. [Django笔记] models 深入学习

    对着官方文档撸一遍,顺便做点笔记 models 定义了本应用的数据库表结构.底层可以由不同的数据库封装实现,因为不同的数据库字段类型不一样,因此,跟以往直接用单一数据库(如mysql)建立的应用有很大 ...

随机推荐

  1. JTextPane或JTextPane设置了滚动条,文本增加后,滚动条自动下滑,追加文本的例子

    http://zhizaibide1987.iteye.com/blog/1012955 https://zhidao.baidu.com/question/2116908942184706107.h ...

  2. python中字典和json的区别

    python中,json和dict非常类似,都是key-value的形式,而且json.dict也可以非常方便的通过dumps.loads互转 定义 python中,json和dict非常类似,都是k ...

  3. asp.net 连接SQL Server 数据库并进行相关操作

    asp.net 连接数据库,操作数据库主要需要两个类,一个是SqlConnection,一个是SqlCommand SqlConnection用于连接数据库,打开数据库,关闭数据库. 连接数据库需要特 ...

  4. BZOJ4551[Tjoi2016&Heoi2016]树——dfs序+线段树/树链剖分+线段树

    题目描述 在2016年,佳媛姐姐刚刚学习了树,非常开心.现在他想解决这样一个问题:给定一颗有根树(根为1),有以下 两种操作:1. 标记操作:对某个结点打上标记(在最开始,只有结点1有标记,其他结点均 ...

  5. BZOJ1926[Sdoi2010]粟粟的书架——二分答案+主席树

    题目描述 幸福幼儿园 B29 班的粟粟是一个聪明机灵.乖巧可爱的小朋友,她的爱好是画画和读书,尤其喜欢 Thomas H. Co rmen 的文章.粟粟家中有一个 R行C 列的巨型书架,书架的每一个位 ...

  6. BZOJ4383 Pustynia(线段树+拓扑排序)

    线段树优化建图暴力拓扑排序即可.对于已确定的数,拓扑排序时dp,每个节点都尽量取最大值,如果仍与已确定值矛盾则无解.叶子连出的边表示大于号,其余边表示大于等于. #include<iostrea ...

  7. HDU4403-模拟、数学

    一道很难的奥数题,给出一个数字串,插入加号和等号使之成立.求成立的算式数. 我的做法是,先分成两段,中间插入等号 ,再分别求出左右两边可能的值和个数,然后对比,把值相等的情况乘起来,加到最终结果上. ...

  8. Saddle Point ZOJ - 3955(求每个值得贡献)

    题意: 给出一个矩阵,删掉一些行和列之后 求剩下矩阵的鞍点的总个数 解析: 对于每个点 我们可以求出来 它所在的行和列  有多少比它大的 设为a 有多少比它小的 设为b 然后对于那些行和列 都有两种操 ...

  9. day8 笔记

    文件操作的最简单步骤open():打开文件,将句柄赋值给一个变量 read()write()等:操作文件 close():关闭文件,一定要关闭文件 ps:python会帮助你保存数据关闭文件,但是要在 ...

  10. 自学Linux Shell6.2-用户自定义环境变量

    点击返回 自学Linux命令行与Shell脚本之路 6.2-用户自定义环境变量 1.设置局部用户定义变量 一旦启动bash shell(或者执行一个shell脚本),你就能创建这个shell进程可见的 ...