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操作的更多相关文章

  1. Python菜鸟之路:Django 数据库操作进阶F和Q操作

    Model中的F F 的操作通常的应用场景在于:公司对于每个员工,都涨500的工资.这个时候F就可以作为查询条件 from django.db.models import F models.UserI ...

  2. django操作数据库之查询F,Q操作 和 seach搜索功能

    # F 使用查询条件的值 # # from django.db.models import F # models.Tb1.objects.update(num=F('num')+1) # Q 构建搜索 ...

  3. Django 之 models的 F() 和 Q() 函数

    前提: app名称为core,models.py 如下: #coding: utf8 import datetime from django.db import models class Order( ...

  4. Django数据操作F和Q、model多对多操作、Django中间件、信号、读数据库里的数据实现分页

    models.tb.objects.all().using('default'),根据using来指定在哪个库里查询,default是settings中配置的数据库的连接名称. 外话:django中引 ...

  5. django数据库操作和中间件

    数据库配置 django的数据库相关表配置在models.py文件中,数据库的连接相关信息配置在settings.py中 models.py相关相关参数配置 from django.db import ...

  6. Django 数据库查询集合(双下划线连表操作)

    Django是一款优秀的web框架,有着自己的ORM数据库模型.在项目中一直使用django数据库,写一篇文章专门记录一下数据库操作.略写django工程创建过程,详写查询过程.可以和sqlalche ...

  7. Django 数据库查询集合(多对多)

    Django 数据库查询集合(双下划线连表操作) 目录: 1.Django环境搭建 2.数据库建表 3.写入数据 4.查询语句 Django环境搭建 1.安装django pip install dj ...

  8. 第三百零九节,Django框架,models.py模块,数据库操作——F和Q()运算符:|或者、&并且——queryset对象序列化

    第三百零九节,Django框架,models.py模块,数据库操作——F()和Q()运算符:|或者.&并且 F()可以将数据库里的数字类型的数据,转换为可以数字类型 首先要导入 from dj ...

  9. python3开发进阶-Django框架中的ORM的常用操作的补充(F查询和Q查询,事务)

    阅读目录 F查询和Q查询 事务 一.F查询和Q查询 1.F查询 查询前的准备 class Product(models.Model): name = models.CharField(max_leng ...

随机推荐

  1. 雷林鹏分享:C# 运算符重载

    C# 运算符重载 您可以重定义或重载 C# 中内置的运算符.因此,程序员也可以使用用户自定义类型的运算符.重载运算符是具有特殊名称的函数,是通过关键字 operator 后跟运算符的符号来定义的.与其 ...

  2. JDK1.7 新特性

    1:switch中可以使用字串   String s = "test";   switch (s) {   case "test" :      System. ...

  3. 20170729xlVba SSC_RECENT100

    Public Sub Recent100() Dim WebText As String Dim Reg As Object, Mh As Object, OneMh As Object Dim i ...

  4. axios构建缓存池存储基础数据

    项目中经常出现需要多次使用的后端数据,通常的做法是通过变量缓存数据,或者通过类似vuex的东西来进行缓存,但是麻烦在于很可能需要判断一大堆的条件,或者说如果有权限控制的时候数据能否读取也是很麻烦的事情 ...

  5. ns-3

    二.NS-3C++脚本的编写如前所述,NS-3的脚本使用C++语言(也支持python),使用四种类型的网络构件(Node.NetDevice.Channel.Application).一个简单的脚本 ...

  6. Eclipse详细设置护眼背景色和字体颜色

    代码区背景色: 参考地址: http://jingyan.baidu.com/article/d5a880eb6c4f7813f147ccef.html Package  explorer 颜色 : ...

  7. Linux文件与目录管理(一)

    一.Linux文件与目录管理 1.Linux的目录结构是树状结构,最顶级的目录是根目录/(用"/"表示) 2.Linux目录结构图: /bin:bin是Binary的缩写,这个目录 ...

  8. Mac安装fish shell

    1.brew update 2.brew install fish 3.sudo vi /etc/shells 增加内容:/usr/local/bin/fish   ##增加fish到shell环境变 ...

  9. 进程控制fork vfork,父子进程,vfork保证子进程先运行

    主要函数: fork 用于创建一个新进程 exit 用于终止进程 exec 用于执行一个程序 wait 将父进程挂起,等待子进程结束 getpid 获取当前进程的进程ID nice 改变进程的优先级 ...

  10. 感知器、logistic与svm 区别与联系

    https://blog.csdn.net/m0_37786651/article/details/61614865 从感知器谈起 对于典型的二分类问题,线性分类器的目的就是找一个超平面把正负两类分开 ...