Django边学边记—模型查询
查询集
- 两大特性
- 惰性执行:创建查询集不会访问数据库,直到调用数据时,才会访问数据库,调用数据的情况包括迭代、序列化、与if合用
- 缓存:查询集的结果被存下来之后,再次查询时会使用之前缓存的数据
- 返回列表的过滤器如下:
- all():返回所有数据
- filter():返回满足条件的数据
- exclude():返回满足条件之外的数据,相当于sql语句中where部分的not关键字
- order_by():排序,默认升序,降序的话在条件前加减号(-)
返回的QuerySet类型可以继续调用查询方法。也就是可以含有零个、一个或多个过滤器。
- 返回单个值的过滤器如下:
- get():返回单个满足条件的对象
- 如果未找到会引发"模型类.DoesNotExist"异常
- 如果多条被返回,会引发"模型类.MultipleObjectsReturned"异常
- get():返回单个满足条件的对象
- 与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边学边记—模型查询的更多相关文章
- Django边学边记—新手Django建项目各流程细节
一.准备虚拟环境 1)安装 virtualenv pip install virtualenv 2)virtualenvwrapper pip install virtualenvwrapper-wi ...
- Django边学边记——中间件
特点 Django中的中间件是一个轻量级.底层的插件系统,可以介入Django的请求和响应处理过程,用于全局修改Django的输入或输出. 每个中间件组件负责做一些特定的功能.中间件全部注册在sett ...
- Django边学边记—静态文件
概念 项目中的CSS.图片.js都是静态文件 一般会将静态文件放到一个单独的目录中,以方便管理 在html页面中调用时,也需要指定静态文件的路径,Django中提供了一种解析的方式配置静态文件路径 静 ...
- Django边学边记—模板
功能 产生html,且不仅仅是一个html 包含: 静态内容:html,css,js 动态内容:模板语言 使用 一般使用 Django中提供的简写函数render调用模板 render(request ...
- Django边学边记—视图
一. url (一)配置 在项目/settings.py中通过ROOT_URLCONF指定url配置 ROOT_URLCONF = 'XXXX.urls' 打开 项目/urls.py 配置 (二)语法 ...
- Django边学边记--状态保持(cookie和session)
Cookie 概念: Cookie,也叫Cookies,指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密),好比会员卡或餐票. 特点: Cookie是由服务 ...
- django模型查询操作
一旦创建好了数据模型,Django就会自动为我们提供一个数据库抽象API,允许创建.检索.更新和删除对象操作 下面的示例都是通过下面参考模型来对模型字段进行操作说明: from django.db i ...
- django 数据库配置 ,APP 迁移.模型基础
# 1.数据库的连接配置django 连接mysql的配置流程:- 安装 pymysql pip install pymysql- 创建数据库用户有创建数据库权限的用户- 创建数据库crm .进入数据 ...
- Django:学习笔记(6)——模型
Django:学习笔记(6)——模型 快速上手 模型到底是什么呢?我们可以想,如果一张数据表的各个字段可以自动映射到一个类的各个属性,则每条记录对应这个类的一个对象.那我们通过类方法来操作对象(即表记 ...
随机推荐
- Python - pydantic 入门介绍与 Models 的简单使用
前言 为啥要学这个,因为 FastAPI 是基于它进行开发的,而且是个不错的框架,所以有必要深入学习 前置学习 Python 类型提示:https://www.cnblogs.com/poloyy/p ...
- sudo apt install net-tools [sudo] zyw 的密码: 正在读取软件包列表... 完成 正在分析软件包的依赖关系树,正在读取状态信息... 完成,没有可用的软件包 net-tools,但是它被其它的软件包引用了。这可能意味着这个缺失的软件包可能已被废弃,或者只能在其他发布源中找到
截图: 先执行: sudo apt-get update 再执行: sudo apt install net-tools 即可安装成功!!
- js继承函数封装
function extend(subClass,superClass) { //初始化一个中间空对象,为了转换主父类关系 var F = function() {}; F.prototype = s ...
- nodejs 更改项目端口号的 方法
我这里是 koa2 项目 1.项目目录 serverConf.js 这里面配置端口 代码如下: const ServerConf= { ServicePort: 3036 }; module.expo ...
- C# 简单的对称加密
const string KEY_64 = "HuidTeac";//注意了,是8个字符 const string IV_64 = "HuidTeac"; pu ...
- HttpClient4.3 教程 第五章 快速API
5.1.Easy to use facade API HttpClient从4.2开始支持快速api.快速api仅仅实现了HttpClient的基本功能,它只要用于一些不需要灵活性的简单场景.例如,快 ...
- offsetof宏---个人笔记
标准库里面提供的offsetof(t,m)宏,用来计算两个变量在内存中的地址偏移量 #include <stdio.h>//原型: #define offsetof(TYPE, MEMBE ...
- Navicate 连接阿里云MySQL(两种方式及原理讲解)
Navicate 连接阿里云(两种方式及原理讲解) 一.直连方式(通过3306端口) 1.概述 2. 环境准备 3.操作及讲解 二.使用SSH通道 1.概述 2.环境准备 3.操作及讲解 如果对你有帮 ...
- CrackMe-CrackHead
转载自:OllyDbg入门教程 现在进入第三篇,这一篇我们重点讲解怎样使用 OllyDBG 中的函数参考(即名称参考)功能.仍然选择 crackmes.cjb.net 镜像打包中的一个名称为 Crac ...
- mzy git学习,初识git(一)
GIT学习 git工作区.暂存区.本地库.远程库 工作区:实际上我们工作的地方,进行写代码或者文件的地方. 暂存区:我们执行了git add 操作之后,就会被提交到暂存区. 本地库:其实最后我们需要执 ...