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#实现的UDP收发请求工具类实例

    本文实例讲述了C#实现的UDP收发请求工具类.分享给大家供大家参考,具体如下: 初始化: ListeningPort = int.Parse(ConfigurationManager.AppSetti ...

  2. FASTQ 数据质量统计工具

    主流工具: FastQC fqcheck readfq 拿到测序数据的第一步就是做质量控制 fqcheck之后得到的结果: 它会统计每条reads,按read 1-100位点计算每个位置的ACGTN含 ...

  3. 【转】Vue.js特点

    作为一名Vue.js的忠实用户,我想有必要写点文章来歌颂这一门美好的语言了,我给它的总体评价是“简单却不失优雅,小巧而不乏大匠”,下面将围绕这句话给大家介绍Vue.js,希望能够激发你对Vue.js的 ...

  4. Sasha and a Very Easy Test CodeForces - 1109E (数学,线段树)

    大意: 给定n元素序列, q个操作: (1)区间乘 (2)单点除(保证整除) (3)区间求和对m取模 要求回答所有操作(3)的结果 主要是除法难办, 假设单点除$x$, $x$中与$m$互素的素因子可 ...

  5. Leetcode 96

    class Solution { public: int numTrees(int n) { ]; dp[] = ; dp[] = ; dp[] = ; ;i <= n;i++){ ; ;j & ...

  6. httpclient cookie保持会话

    COOKIE保持回话 httpclient4.x自带维护回话的功能,只要使用同一个httpclient且未关闭连接,就可以使用相同的回话来访问其他要求登陆验证的服务. 如果需要使用HttpClient ...

  7. c#输出指定信息到文本文件中(追加方式)

    /// <summary> /// 输出指定信息到文本文件 /// </summary> /// <param name="msg">输出信息& ...

  8. jenkins的应用与搭建

    实验条件2个服务器, git服务器 ip地址:192.168.200.151 Jenkins服务器 ip地址:192.168.200.132 操作系统:centos7.5 [root@git ~]# ...

  9. codeforces 851C Five Dimensional Points(鸽巢原理)

    http://codeforces.com/contest/851/problem/C 题意 - 给出 n 个五维空间的点 - 一个点a为 bad 的定义为 存在两点 b, c, 使的<ab, ...

  10. Struts2内置校验器——完整实例代码

    一.校验器的配置风格 1.字段校验器: <field name="被校验的字段"> <field-validator type="校验器名"& ...