django的models模块查询方法
假定models中有一个类BookInfo
模块查询不同于sql语句,模块查询的结果会返回符合条件的整个一行的对象,或者多个对象组成的查询集。
查询集类似列表,有相似的方法。
1 model查询语句:
1 get(条件) 查询一条 多条或者没有数据会抛出异常 返回一个BookInfo对象
BookInfo.objects.get(id = 1) #查询bookinfo表中id为1的数据
2 all() 查询所有 不能加条件 返回一个查询集 类似列表,有和列表一样的方法
BookInfo.objects.all() #查询bookinfo表中所有的数据
3 filter(条件) 查询符合条件的全部对象 返回一个查询集
BookInfo.objects.filter(isDelete = false)
4 exclude(条件) 查询不符合条件的所有 返回一个查询集
2 查询条件: 模型类属性__条件 = 值
1 判断相等: __exact 可以省略条件,直接 属性= 值
BookInfo.objects.filter(id__exact = 1) #查询表中id是1的
2 模糊查询 包含: __contains
BookInfo.objects.filter( btitle__contains = "传" ) #查询表中 btitle字段包含 传 的
3 开头 结尾: __startswith __endwith
BookInfo.objects.filter( btitle__endswith="") #查询btitle 以 "" 为结尾的
BookInfo.objects.filter( btitle__startswidth = "")
4 空查询: __isnull __isnotnull = True/False
BookInfo.objects.filter( btitle__isnull = False )
5 查询范围 __in = 元组/列表
BookInfo.objects.filter( bid__in = [1,3,5] )
6 比较大小 __gt大于 __gte大于等于 __lt小于 __lte小于等于
BookInfo.objects.filter( id__gt = 3 ) # id大于3
7 查询日期 __year __mont __day __weekday __hour __second
BookInfo.objects.filter(bpub_date__year = 1980) # 查询1980年
BookInfo.objects.filter( bpub_date__gt = date(1980,1,1) ) #大于指定日期
3 多个属性的比较: 引入F对象
#例:查询阅读量大于等于评论量的图书。
from django.db.models import F
list = BookInfo.books.filter(bread__gte=F('bcommet'))
4 逻辑 与 或 非
#例:查询阅读量大于20,并且编号小于3的图书。 list=BookInfo.books.filter(bread__gt=20,id__lt=3)
#或者
list=BookInfo.books.filter(bread__gt=20).filter(id__lt=3)
Q对象可以使用 &表示逻辑与,|表示逻辑或,~表示非not。
from django.db.models import Q
#例:查询阅读量大于20,或编号小于3的图书,只能使用Q对象实现 list = BookInfo.books.filter(Q(bread__gt=20) | Q(pk__lt=3))
#例:查询编号不等于3的图书。 list = BookInfo.books.filter(~Q(pk=3))
5 聚合函数:
使用aggregate()过滤器调用聚合函数。
聚合函数定义在django.db.models中 Avg,Count,Max,Min,Sum
from django.db.models import Sum
#例:查询图书的总阅读量。
list = BookInfo.books.aggregate(Sum('bread'))
#例:查询图书总数。
list = BookInfo.books.count()
django的models模块查询方法的更多相关文章
- Django开发之路 二(django的models表查询)
django的models表查询 一.单表查询 (1) all(): 查询所有结果 # 返回的QuerySet类型 (2) filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 #返 ...
- django学习~models之查询
一 简介:今天学习models查询的一些东西 二 理解概念 Queryset 定义 从数据库中查询出来的结果一般是一个集合,这个集合叫做 QuerySet 三 细节学习 一 常用的models函数 . ...
- django之models模块使用
定义模型 将数据库表定义成类,集成models.Model from django.db import models # Create your models here. class Author(m ...
- django学习-15.ORM查询方法汇总
1.前言 django的ORM框架提供的查询数据库表数据的方法很多,不同的方法返回的结果也不太一样,不同方法都有各自对应的使用场景. 主要常用的查询方法个数是13个,按照特点分为这4类: 方法返回值是 ...
- Django之models模块
一.字段 1. AutoField(Field) int自增列,必须填入参数 primary_key=True 2.BigAutoField(AutoField) bigint自增列,必须填入参数 p ...
- 第三百零八节,Django框架,models.py模块,数据库操作——链表结构,一对多、一对一、多对多
第三百零八节,Django框架,models.py模块,数据库操作——链表结构,一对多.一对一.多对多 链表操作 链表,就是一张表的外键字段,连接另外一张表的主键字段 一对多 models.Forei ...
- 第三百零七节,Django框架,models.py模块,数据库操作——表类容的增删改查
Django框架,models.py模块,数据库操作——表类容的增删改查 增加数据 create()方法,增加数据 save()方法,写入数据 第一种方式 表类名称(字段=值) 需要save()方法, ...
- 第三百零六节,Django框架,models.py模块,数据库操作——创建表、数据类型、索引、admin后台,补充Django目录说明以及全局配置文件配置
Django框架,models.py模块,数据库操作——创建表.数据类型.索引.admin后台,补充Django目录说明以及全局配置文件配置 数据库配置 django默认支持sqlite,mysql, ...
- 五 Django框架,models.py模块,数据库操作——表类容的增删改查
Django框架,models.py模块,数据库操作——表类容的增删改查 增加数据 create()方法,增加数据 save()方法,写入数据 第一种方式 表类名称(字段=值) 需要save()方法, ...
随机推荐
- CentOS7安装最新版git教程
下载编译工具 yum -y groupinstall "Development Tools" 下载依赖包 yum -y install zlib-devel perl-ExtUti ...
- git远程提交失败
同步仓库并解决403报错 这时候对本地仓库和github进行同步 # git push -u origin master error: The requested URL returned error ...
- jQuery 3.0最终版发布,十大新特性眼前一亮
jQuery 3.0在日前发布了最终的全新版本.从2014年10月,jQuery团队对这个主要大版本进行维护开始,web开发者社区便一直在期待着这一刻的到来,终于在2016年6月他们迎来了这一个最终板 ...
- select子句和三种子查询
一.select子句 五种子句 Where.group by.having.order by.limit Where.group by.having.order by.limit运用的这个顺序不能变 ...
- Redis+Restful 构造序列号和压力测试【原创】
[本人原创],欢迎交流和分享技术,转载请附上如下内容:如果你觉得这篇文章对你有帮助,请记得帮我点赞, 谢谢!作者:kevin[转自]http://www.cnblogs.com/itshare/ 很多 ...
- Mycat 分片规则详解--日期范围 hash 分片
实现方式:其思想和范围取模分片一样,由于日期取模会出现数据热点问题,所以先根据日期分组,再根据时间 hash 使得短期数据分布跟均匀. 优点:避免扩容时的数据迁移,可以在一定程度上避免范围分片的热点问 ...
- thinkphp5 taglib自定义标签教程
学着写了一下,终于搞定了,顺便分享一下!taglib是tp框架自定义标签功能,如果你用过cms,肯定见过类似: {dede:arclist typeid='' row='' col='' titlel ...
- C++单例模式的经典实现(Singleton)
C++单例经典实现 本文主要介绍C++使用中的单例的两种经典实现,基本可满足一般的使用,主要分为饿汉模式和懒汉模式两种 饿汉模式 class Singleton { public: static Si ...
- NEO从入门到开窗(4) - NEO CLI
一.唠叨两句 首先,我们都知道区块链是去中心化的,其中节点都是对等节点,每个节点都几乎有完整的区块链特性,CLI就是NEO的一个命令行对等节点,当然也有GUI这个项目,图形化的NEO节点.节点之间需要 ...
- Java基础学习笔记十九 IO
File IO概述 回想之前写过的程序,数据都是在内存中,一旦程序运行结束,这些数据都没有了,等下次再想使用这些数据,可是已经没有了.那怎么办呢?能不能把运算完的数据都保存下来,下次程序启动的时候,再 ...