Django 数据库操作进阶F和Q操作
Model中的F
F 的操作通常的应用场景在于:公司对于每个员工,都涨500的工资。这个时候F就可以作为查询条件
1
2
3
|
from django.db.models import F models.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. 创建条件q1 q1 = Q() q1.connector = 'OR' q1.children.append(( 'id' , 1 )) # 这三个条件以or的形式连接 q1.children.append(( 'id' , 2 )) q1.children.append(( 'id' , 3 )) # 4. 创建条件q2 q2 = 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 ...
随机推荐
- 利用Py-Socket模块做的一个不登陆windows服务器自动实现替换或者调用自动拨号功能
xu言: 最近,有个朋友让我帮忙“搞点事情”,然后正好在学习socket模块,这个模块666啊,基本上可以实现远程服务器cmd shell的大部分功能.好,话不多说,直接上码~ 由于很多电信运营商都会 ...
- 我理解的NODE
简介:NODE不是我们想象中的后台语言,它不是一门语言,它是一个和浏览器类似的工具或者平台,在NODE平台中,可以把我们写的JS代码解析出来,而且NODE和谷歌浏览器一样都是采用V8引擎渲染解析的. ...
- stl算法:next_permutation剖析
在标准库算法中,next_permutation应用在数列操作上比较广泛.这个函数可以计算一组数据的全排列.但是怎么用,原理如何,我做了简单的剖析. 首先查看stl中相关信息.函数原型: templa ...
- android webservice 成功版(帅哥)
package com.ts.xtweatherreport01;import java.io.UnsupportedEncodingException; import android.annotat ...
- 二、为什么要用MapReduce
一.为什么要用MapReduce? 首先MapReduce被广泛应用于日志分析.海量数据的排序.在海量数据中查找特定模式等 场景.而且它非常简单,易于实现且扩展性强.可以通过它编写同事在多台主机上运行 ...
- Shell脚本的学习(二)
Shell脚本的学习(二) 方法: 1) 一个计算器: 2)递归实现打印目录 3)方法调用
- vue2.0对不同数据类型的显示
- JS获取昨天/今天/今年第一天的方法
talk is cheap,show me the code! //获取昨天 var day1 = new Date(); day1.setTime(day1.getTime()-24*60*60*1 ...
- 传递数据后创建后台service来处理事件!
package com.lixu.service; import android.app.Service; import android.content.Intent; import android. ...
- HDU 2767 Proving Equivalences (Tarjan)
Proving Equivalences Time Limit : 4000/2000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other ...