假定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模块查询方法的更多相关文章

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

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

  2. django学习~models之查询

    一 简介:今天学习models查询的一些东西 二 理解概念 Queryset 定义 从数据库中查询出来的结果一般是一个集合,这个集合叫做 QuerySet 三 细节学习 一 常用的models函数 . ...

  3. django之models模块使用

    定义模型 将数据库表定义成类,集成models.Model from django.db import models # Create your models here. class Author(m ...

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

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

  5. Django之models模块

    一.字段 1. AutoField(Field) int自增列,必须填入参数 primary_key=True 2.BigAutoField(AutoField) bigint自增列,必须填入参数 p ...

  6. 第三百零八节,Django框架,models.py模块,数据库操作——链表结构,一对多、一对一、多对多

    第三百零八节,Django框架,models.py模块,数据库操作——链表结构,一对多.一对一.多对多 链表操作 链表,就是一张表的外键字段,连接另外一张表的主键字段 一对多 models.Forei ...

  7. 第三百零七节,Django框架,models.py模块,数据库操作——表类容的增删改查

    Django框架,models.py模块,数据库操作——表类容的增删改查 增加数据 create()方法,增加数据 save()方法,写入数据 第一种方式 表类名称(字段=值) 需要save()方法, ...

  8. 第三百零六节,Django框架,models.py模块,数据库操作——创建表、数据类型、索引、admin后台,补充Django目录说明以及全局配置文件配置

    Django框架,models.py模块,数据库操作——创建表.数据类型.索引.admin后台,补充Django目录说明以及全局配置文件配置 数据库配置 django默认支持sqlite,mysql, ...

  9. 五 Django框架,models.py模块,数据库操作——表类容的增删改查

    Django框架,models.py模块,数据库操作——表类容的增删改查 增加数据 create()方法,增加数据 save()方法,写入数据 第一种方式 表类名称(字段=值) 需要save()方法, ...

随机推荐

  1. spring boot整合log4j2

    POM配置 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http: ...

  2. Linux中查看进程树

    pstree -p 查看当前的shell的进程和执行shell脚本的子进程的方法:echo $$

  3. 针对微信的一篇推送附有的数据链接进行MapReduce统计

    原推送引用:https://mp.weixin.qq.com/s/3qQqN6qzQ3a8_Au2qfZnVg 版权归原作者所有,如有侵权请及时联系本人,见谅! 原文采用Excel进行统计数据,这里采 ...

  4. 从分布式一致性到共识机制(一)Paxos算法

    从分布式系统的CAP理论出发,关注分布式一致性,以及区块链的共识问题及解决. 区块链首先是一个大规模分布式系统,共识问题本质就是分布式系统的一致性问题,但是又有很大的不同.工程开发中,认为系统中存在故 ...

  5. MYSQL数据库学习十五 事务

    15.1 事务概述 当多个用户访问同一份数据,一个用户在更改数据的过程中可能有其他用户同时发起更改请求,为保证数据库记录的更新从一个一致性状态变为另一个一致性状态,使用事务处理是非常必要的. 事务有以 ...

  6. 小白学PYTHON时最容易犯的6个错误,看看你遇到过几个

    最近又在跟之前的同学一起学习python,一起进步,发现很多测试同学在初学python的时候很容易犯一些错误,特意总结了一下.其实这些错误不仅是在学python时会碰到,在学习其他语言的时候也同样会碰 ...

  7. [poj3254]Corn Fields_状压dp

    Corn Fields poj3254 题目大意:给你一个n*m的地,每一块地可以种或不种,两块种过的地不能挨着,可以一块都不种,问所有的种地方案数. 注释:读入用0和1,1<=n,m<= ...

  8. 阿里聚安全·安全周刊】一种秘密窃取数据的新型 Android 木马|iOS 11相机惊现BUG

    本周的七个关键词:  新型 Android 木马丨 TLS 1.3 丨  阿里安全图灵实验室 丨 漏洞感染 Linux 服务器 丨 CPU曝极危漏洞 丨   iOS 11相机BUG 丨R2D2技术 - ...

  9. WCF跨域解决方法及一些零碎的东西。

    之前发过一篇随笔,说的WCF配置文件配置问题.里面也配了跨域支持,但是jsoncollback只支持Get请求,Post请求是解决不了,所以这里把真正的WCF跨域问题贴出来. 话不多说,直接帖配置文件 ...

  10. Vue 知识复习(上)

    Vue Vue实例 创建实例: var vm = new Vue({ //code }) 数据与方法: 只有当实例被创建时 data 中存在的属性才是响应式的; Vm.b = 'h1' 是不会触发视图 ...