django学习~models之查询
一 简介:今天学习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之查询的更多相关文章
- Django开发之路 二(django的models表查询)
django的models表查询 一.单表查询 (1) all(): 查询所有结果 # 返回的QuerySet类型 (2) filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 #返 ...
- django的models模块查询方法
假定models中有一个类BookInfo 模块查询不同于sql语句,模块查询的结果会返回符合条件的整个一行的对象,或者多个对象组成的查询集. 查询集类似列表,有相似的方法. 1 model查询语句: ...
- django学习-15.ORM查询方法汇总
1.前言 django的ORM框架提供的查询数据库表数据的方法很多,不同的方法返回的结果也不太一样,不同方法都有各自对应的使用场景. 主要常用的查询方法个数是13个,按照特点分为这4类: 方法返回值是 ...
- 八、django学习之分组查询、F查询和Q查询
分组查询.F查询和Q查询 分组查询 统计每个出版社出版的书籍的平均价格 第一种方式 obj = models.Book.objects.values('publishs_id').annotate(a ...
- 六、Django学习之基于下划线的跨表查询
六.Django学习之基于下划线的跨表查询 一对一 正向查询的例子为 已知用户名,查询用户的电话号码.反向查询例子反之. 正向查询 其中下划线前的表示表名,无下划线的表示的是Author表 resul ...
- 五、Django学习之基于对象的跨表查询
五.Django学习之基于对象的跨表查询 正向与反向查询 关键在于ForeignKey字段写的位置.例如下面这段代码, 关系属性(字段)写在哪个类(表)里面,从当前类(表)的数据去查询它关联类(表)的 ...
- Django 学习 之ORM聚合查询分组查询与F查询与Q查询
一.聚合查询和分组查询 1.聚合查询aggregate 关于数据表的数据请见上一篇:Django 学习 之ORM多表操作(点我) aggregate(*args, **kwargs),只对一个组进行聚 ...
- Django学习笔记之Models与ORM操作
一.ORM增加 from django.db import models class Publisher(models.Model): name = models.CharField(max_leng ...
- [Django笔记] models 深入学习
对着官方文档撸一遍,顺便做点笔记 models 定义了本应用的数据库表结构.底层可以由不同的数据库封装实现,因为不同的数据库字段类型不一样,因此,跟以往直接用单一数据库(如mysql)建立的应用有很大 ...
随机推荐
- 16mysql1
一.数据库的基本概念 1.1 常用的关系型数据库 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库. 1.2 sql语言 ...
- VMware Linux虚拟机yum源更换成国内阿里源
[虚拟机系统] Centos 6.8 阿里源:https://opsx.alibaba.com/mirror 网易源:http://mirrors.163.com/ 更换yum源时请保证虚拟机和外网是 ...
- MT【42】抛物线不常见性质1.
评:特别的,当$PP'$为切线时,$\angle PSK=90^0$ 注:S为抛物线焦点.
- 自学Aruba5.3.1-Aruba安全认证-有PEFNG 许可证环境的认证配置OPEN、PSK
点击返回:自学Aruba之路 自学Aruba5.3.1-Aruba安全认证-有PEFNG 许可证环境的认证配置OPEN.PSK OPEN.PSK都需要设置Initial Role角色, 但是角色派生完 ...
- 架构师成长之路2.1-PXE+Kickstart原理
点击返回架构师成长之路 架构师成长之路2.1-PXE+Kickstart原理 PXE+Kickstart 主要用于在公司内网批量安装新服务器系统,这极大地简化了用光盘重复安装Linux操作系统的过程, ...
- 【转】九大排序算法-C语言实现及详解
概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存. 我们这里说说八大排序就是内部排序. 当n较大, ...
- Spring Cloud(三) --- hystrix
Hystrix 说到Hystrix就得先说一下产生的背景等等,那就是雪崩效应. 在微服务中肯定存在多个服务层之间的调用,基础服务的故障可能会导致级联故障,进而造成整个系统不可用的情况,这种现象被称为服 ...
- pip install时遇到MemoryError的原因和处理方法
前言:同学们在用pip install的时候,可能会遇到MemoryError的问题 报错如下,看最后一行的memory error关键字: 报错的原因大致如下:(详细细节可以查看此处) This e ...
- ->2018.06 计划
2018.4.14->2018.06计划 力求掌握以下几种算法: 树链剖分 网络流 主席树 splay 莫队
- 【洛谷P1379】八数码难题 状压bfs
对于这道题来说,每个时刻的状态是整个棋盘所有棋子的位置,即:任何一个棋子位置发生了移动,都会使得状态转移. 因此,需要采取将整个状态作为广搜的搜索对象,进行状态压缩.采用哈希得到每个状态的对应的数值, ...