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)——模型 快速上手 模型到底是什么呢?我们可以想,如果一张数据表的各个字段可以自动映射到一个类的各个属性,则每条记录对应这个类的一个对象.那我们通过类方法来操作对象(即表记 ...
随机推荐
- jupyter notebook使用python虚拟环境
jupyter指定环境启动 背景 系统环境中安装有jupyter及相关库,因项目需要,新建了一个torch相关的虚拟环境并安装了对应的内容, 此时,想通过系统中的jupyter启动一个可以应用虚拟环境 ...
- DVWA(四):Command Injection 全等级命令注入
Command Injection : 命令注入(Command Injection),对一些函数的参数没有做好过滤而导致用户可以控制输入的参数,使其恶意执行系统命令或这cmd.bash指令的一种注入 ...
- 004 PCI Express体系结构(四)
一.PCI总线的中断机制 PCI总线使用INTA#.INTB#.INTC#和INTD#信号向处理器发出中断请求.这些中断请求信号为低电平有效,并与处理器的中断控制器连接.在PCI体系结构中,这些中断信 ...
- SQL 练习31
查询任何一门课程成绩在 70 分以上的姓名.课程名称和分数 SELECT Sname,cname,Course.CId,SC.score from Student,Course,sc WHERE St ...
- idea的properties文件乱码问题解决
设置编码格式: File============>Settings,打开设置后,设置成下面的即可解决:
- C#多线程实践-锁和线程安全
锁实现互斥的访问,用于确保在同一时刻只有一个线程可以进入特殊的代码片段,考虑下面的类: class ThreadUnsafe { static int val1, val2; static void ...
- 【GIS】点图层符号的方向和大小
方向:根据属性字段设置点图层中每个要素的符号方向和大小, 1 所有要素使用同一种符号---简单渲染 在图层属性---符号系统---单一符号中进行设置,首先设置符号,在后面的[高级]选项按钮中分别设置[ ...
- ProjectEuler 005题
题目: 2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any ...
- ElasticSearch之配置文件详解
################################### Cluster ################################### #定义集群名称,默认是elasticse ...
- final 关键字,你想知道的都在这里
哈喽,大家好,我是指北君. 介绍完 native.static 关键字后,指北君马不停蹄,接着为大家介绍另一个常用的关键字--final. 对于Java中的 final 关键字,我们首先可以从字面意思 ...