Django 数据库操作进阶F和Q操作
Model中的F
F 的操作通常的应用场景在于:公司对于每个员工,都涨500的工资。这个时候F就可以作为查询条件
|
1
2
3
|
from django.db.models import Fmodels.UserInfo.objects.filter().update(salary=F('salary')+500)# F('salary')就表示salary在这行记录中的值。 |
F的使用场景基本就是这样,比较简单。
Model中的Q
Q 的操作通常的应用场景在于:构造搜索条件。
普通filter搜索条件支持三种传参方式:1. 传具体参数 2.传字典 3.传Q对象。具体例子如下
1. 传具体参数
|
1
|
models.UserInfo.objects.filter(id=3,name='Bob') |
2. 传字典
|
1
2
|
dic = {'id':3,'name':'Bob'}models.UserInfo.objects.filter(**dic) |
3. 传Q对象--通常会用在进行构造组合搜索
步骤显示:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
类型一: 构建简单搜索条件# 1. 导入Q模块from django.db.models import Q# 2. 传入条件进行查询q1 = Q() # 创建Q对象实例q1.connector = 'OR' # 多个条件之间以or形式连接q1.children.append(('id', 1)) q1.children.append(('id', 2))q1.children.append(('id', 3)) models.Tb1.objects.filter(q1) # 传入简单的Q对象进行查询,每个查询条件之间以or连接#--------------------------------------------------------------------------------#类型二:构建复杂搜索条件# 1. 导入Q模块from django.db.models import Q# 2. 创建Q对象实例con = Q()# 3. 创建条件q1q1 = Q()q1.connector = 'OR'q1.children.append(('id', 1)) # 这三个条件以or的形式连接q1.children.append(('id', 2))q1.children.append(('id', 3))# 4. 创建条件q2q2 = Q()q2.connector = 'OR'q2.children.append(('status', '在线'))# 5. 指定不同搜索条件之间以and还是or来连接con.add(q1, 'AND')con.add(q2, 'AND') # 表示q1与q2之间通过and来连接models.Tb1.objects.filter(con) #传入复杂Q对象进行搜索 |
Django 数据库操作进阶F和Q操作的更多相关文章
- Python菜鸟之路:Django 数据库操作进阶F和Q操作
Model中的F F 的操作通常的应用场景在于:公司对于每个员工,都涨500的工资.这个时候F就可以作为查询条件 from django.db.models import F models.UserI ...
- django操作数据库之查询F,Q操作 和 seach搜索功能
# F 使用查询条件的值 # # from django.db.models import F # models.Tb1.objects.update(num=F('num')+1) # Q 构建搜索 ...
- Django 之 models的 F() 和 Q() 函数
前提: app名称为core,models.py 如下: #coding: utf8 import datetime from django.db import models class Order( ...
- Django数据操作F和Q、model多对多操作、Django中间件、信号、读数据库里的数据实现分页
models.tb.objects.all().using('default'),根据using来指定在哪个库里查询,default是settings中配置的数据库的连接名称. 外话:django中引 ...
- django数据库操作和中间件
数据库配置 django的数据库相关表配置在models.py文件中,数据库的连接相关信息配置在settings.py中 models.py相关相关参数配置 from django.db import ...
- Django 数据库查询集合(双下划线连表操作)
Django是一款优秀的web框架,有着自己的ORM数据库模型.在项目中一直使用django数据库,写一篇文章专门记录一下数据库操作.略写django工程创建过程,详写查询过程.可以和sqlalche ...
- Django 数据库查询集合(多对多)
Django 数据库查询集合(双下划线连表操作) 目录: 1.Django环境搭建 2.数据库建表 3.写入数据 4.查询语句 Django环境搭建 1.安装django pip install dj ...
- 第三百零九节,Django框架,models.py模块,数据库操作——F和Q()运算符:|或者、&并且——queryset对象序列化
第三百零九节,Django框架,models.py模块,数据库操作——F()和Q()运算符:|或者.&并且 F()可以将数据库里的数字类型的数据,转换为可以数字类型 首先要导入 from dj ...
- python3开发进阶-Django框架中的ORM的常用操作的补充(F查询和Q查询,事务)
阅读目录 F查询和Q查询 事务 一.F查询和Q查询 1.F查询 查询前的准备 class Product(models.Model): name = models.CharField(max_leng ...
随机推荐
- 雷林鹏分享:C# 运算符重载
C# 运算符重载 您可以重定义或重载 C# 中内置的运算符.因此,程序员也可以使用用户自定义类型的运算符.重载运算符是具有特殊名称的函数,是通过关键字 operator 后跟运算符的符号来定义的.与其 ...
- JDK1.7 新特性
1:switch中可以使用字串 String s = "test"; switch (s) { case "test" : System. ...
- 20170729xlVba SSC_RECENT100
Public Sub Recent100() Dim WebText As String Dim Reg As Object, Mh As Object, OneMh As Object Dim i ...
- axios构建缓存池存储基础数据
项目中经常出现需要多次使用的后端数据,通常的做法是通过变量缓存数据,或者通过类似vuex的东西来进行缓存,但是麻烦在于很可能需要判断一大堆的条件,或者说如果有权限控制的时候数据能否读取也是很麻烦的事情 ...
- ns-3
二.NS-3C++脚本的编写如前所述,NS-3的脚本使用C++语言(也支持python),使用四种类型的网络构件(Node.NetDevice.Channel.Application).一个简单的脚本 ...
- Eclipse详细设置护眼背景色和字体颜色
代码区背景色: 参考地址: http://jingyan.baidu.com/article/d5a880eb6c4f7813f147ccef.html Package explorer 颜色 : ...
- Linux文件与目录管理(一)
一.Linux文件与目录管理 1.Linux的目录结构是树状结构,最顶级的目录是根目录/(用"/"表示) 2.Linux目录结构图: /bin:bin是Binary的缩写,这个目录 ...
- Mac安装fish shell
1.brew update 2.brew install fish 3.sudo vi /etc/shells 增加内容:/usr/local/bin/fish ##增加fish到shell环境变 ...
- 进程控制fork vfork,父子进程,vfork保证子进程先运行
主要函数: fork 用于创建一个新进程 exit 用于终止进程 exec 用于执行一个程序 wait 将父进程挂起,等待子进程结束 getpid 获取当前进程的进程ID nice 改变进程的优先级 ...
- 感知器、logistic与svm 区别与联系
https://blog.csdn.net/m0_37786651/article/details/61614865 从感知器谈起 对于典型的二分类问题,线性分类器的目的就是找一个超平面把正负两类分开 ...