查询集

  • 两大特性

    • 惰性执行:创建查询集不会访问数据库,直到调用数据时,才会访问数据库,调用数据的情况包括迭代、序列化、与if合用
    • 缓存:查询集的结果被存下来之后,再次查询时会使用之前缓存的数据
  • 返回列表的过滤器如下:
    • all():返回所有数据
    • filter():返回满足条件的数据
    • exclude():返回满足条件之外的数据,相当于sql语句中where部分的not关键字
    • order_by():排序,默认升序,降序的话在条件前加减号(-)

返回的QuerySet类型可以继续调用查询方法。也就是可以含有零个、一个或多个过滤器。

  • 返回单个值的过滤器如下:

    • get():返回单个满足条件的对象

      • 如果未找到会引发"模型类.DoesNotExist"异常
      • 如果多条被返回,会引发"模型类.MultipleObjectsReturned"异常
  • 与sql语句相比,查询集和select语句等价,过滤器像where和limit子句
  • aggregate():聚合
  • exists():判断查询集中是否有数据,如果有则返回True,没有则返回False
  • 查询集 可以像列表一样进行切片。

字段查询

  • 在Django的shell中 用__来连接属性名(sql中叫字段)和比较运算符,类似sql语句中的空格
  • 属性名称__比较运算符=值
    比如:类名.objects.filter(类属性__isnull=False)

条件运算符主要有:

  • __exact:表示判等
  • __contains:是否包含
  • __startswith、__endswith:以指定值开头或结尾
  • __isnull:是否为null

        (以上运算符都区分大小写,在这些运算符前加上i表示不区分大小写,如__iexact、__icontains、__istartswith、__iendswith)

  • __in:是否包含在范围内
  • __gt、__gte、__lt、__lte:大于、大于等于、小于、小于等于,(不等于使用等于的运算符,使用exclude()过滤器)
  • __year、__month、__day、__week_day、__hour、__minute、__second:对日期时间类型的属性进行运算

关联查询

  • Django中也能实现类似于join查询,要查那个类中的数据就从那个类来查,写关联条件时如果类中没有关联属性,要写类的名字小写,有关联属性就写关联属性.语法如下:
要查的模型.objects.过滤器(关联模型类名小写[或关联属性]__属性名[__运算符]=值)

F对象

  • 对象的属性与属性值比较,从django.db.models导入F对象。语法如下:
from django.db.models import F
F(属性名)

可以在F()对象上使用算数运算

Q对象

from django.db.models import F
Q(属性名__运算符=值)
  • 多个过滤器逐个调用表示逻辑与关系,同sql语句中where部分的and关键字,如果需要实现逻辑或or的查询,需要使用Q()对象结合|运算符。(实际上Q对象,在我的理解就是相当于())
  • Q对象可以使用&、|连接,&表示逻辑与,|表示逻辑或,Q对象前使用~操作符,表示非not
  • 从django.db.models导入Q对象。语法如下:

聚合函数

  • 使用aggregate()过滤器调用聚合函数,返回一个字典。
  • 从django.db.models中导入聚合函数,包括:Avg,Count,Max,Min,Sum

跟聚合相关的还有一个count()函数 返回的是一个数字。

Django边学边记—模型查询的更多相关文章

  1. Django边学边记—新手Django建项目各流程细节

    一.准备虚拟环境 1)安装 virtualenv pip install virtualenv 2)virtualenvwrapper pip install virtualenvwrapper-wi ...

  2. Django边学边记——中间件

    特点 Django中的中间件是一个轻量级.底层的插件系统,可以介入Django的请求和响应处理过程,用于全局修改Django的输入或输出. 每个中间件组件负责做一些特定的功能.中间件全部注册在sett ...

  3. Django边学边记—静态文件

    概念 项目中的CSS.图片.js都是静态文件 一般会将静态文件放到一个单独的目录中,以方便管理 在html页面中调用时,也需要指定静态文件的路径,Django中提供了一种解析的方式配置静态文件路径 静 ...

  4. Django边学边记—模板

    功能 产生html,且不仅仅是一个html 包含: 静态内容:html,css,js 动态内容:模板语言 使用 一般使用 Django中提供的简写函数render调用模板 render(request ...

  5. Django边学边记—视图

    一. url (一)配置 在项目/settings.py中通过ROOT_URLCONF指定url配置 ROOT_URLCONF = 'XXXX.urls' 打开 项目/urls.py 配置 (二)语法 ...

  6. Django边学边记--状态保持(cookie和session)

    Cookie 概念: Cookie,也叫Cookies,指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密),好比会员卡或餐票. 特点: Cookie是由服务 ...

  7. django模型查询操作

    一旦创建好了数据模型,Django就会自动为我们提供一个数据库抽象API,允许创建.检索.更新和删除对象操作 下面的示例都是通过下面参考模型来对模型字段进行操作说明: from django.db i ...

  8. django 数据库配置 ,APP 迁移.模型基础

    # 1.数据库的连接配置django 连接mysql的配置流程:- 安装 pymysql pip install pymysql- 创建数据库用户有创建数据库权限的用户- 创建数据库crm .进入数据 ...

  9. Django:学习笔记(6)——模型

    Django:学习笔记(6)——模型 快速上手 模型到底是什么呢?我们可以想,如果一张数据表的各个字段可以自动映射到一个类的各个属性,则每条记录对应这个类的一个对象.那我们通过类方法来操作对象(即表记 ...

随机推荐

  1. 【ShardingSphere技术专题】「ShardingJDBC」SpringBoot之整合ShardingJDBC实现分库分表(JavaConfig方式)

    前提介绍 ShardingSphere介绍 ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC.Sharding-Proxy和Shardin ...

  2. QZEZTEST2021.7.27分析

    T1 qzez 错误检测 题意 思路 代码 T2 qzez 比赛 题意 题面 有\(AB\)两队,每队\(n\)人,两队间进行\(n\)场比赛,每个人都要参赛,对手随机且概率均等.每人都有一个实力值, ...

  3. MATLAB—信号与系统中的应用

    文章目录 一. 理论知识 1.线性系统的响应 2.微分方程的解 Ⅰ.经典解 Ⅱ.完全响应 3.零输入响应 4.零状态响应 5.冲激响应 6.阶跃响应 7.卷积求零状态响应 二.连续信号的MATLAB描 ...

  4. noip13

    T1 一开始直接丢了个暴力走人50pts,然后开始打表找规律,啥也没找着,最后二十分钟突然看出来了什么,把 \(f_{n,m}\)式子列了一下,发现常数项没啥规律,最后五分钟,突然闪过一丝灵感,但是是 ...

  5. 题解 Six(留坑)

    传送门 考场上搞了个三进制状压,结果正确性假了-- 有想到从约数下手,但觉得就光预处理约数复杂度就爆炸就没往这边想-- 首先是关于约数个数的证明,再一次感谢战神: 因为 \(n = \prod p_i ...

  6. 题解 [SDOI2010]所驼门王的宝藏

    传送门 保分题再度爆零,自闭ing×2 tarjan没写vis数组,点权算的也有点问题 这题情况3的连边有点麻烦,考场上想了暴力想了二分就是没想到可以直接拿map水过去 不过map果然贼慢,所以这也是 ...

  7. javascript - 将字符串转换为模板字符串

    参考: https://www.itranslater.com/qa/details/2325714161562551296 是否可以将模板字符串创建为常用字符串 let a="b:${b} ...

  8. asp.net core 常见知识点

  9. COM笔记-关于HRESULT

    HRESULT HRESULT(Here's the RESULT)值分成32位值, HRESULT值中16到30这15个比特位包含的是设备代码.设备代码标识的是可以返回HRESULT返回代码的操作系 ...

  10. mybatis根据表逆向自动化生成代码(自动生成实体类、mapper文件、mapper.xml文件)

    .personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...