F 对象:
可以使用模型的 A 属性和 B 属性进行比较
写法:
需要的数据对象 = 数据表(类名).objects.filter(列名__条件=F('列名2'))
需求: 查看男生数量比女生少 的公司名称
companies = Company.objects.filter(c_boy_num__lt=F('c_girl_num')) F 对象支持算术运算 需求: 查看男生数量比女生少 15个的公司名称
companies = Company.objects.filter(c_boy_num__lt=F('c_girl_num')-15)

在 models.py 中创建数据表 Company

class Company(models.Model):
c_name = models.CharField(max_length=16)
# 公司名字
c_girl_num = models.IntegerField(max_length=16)
# 女生人数
c_boy_num = models.IntegerField(max_length=16)
# 男生人数

产生迁移文件
python manage.py makemigrations 进行迁移
python manage.py migrate

添加数据

 


在 urls.py 中进行注册

需求:
查看 女生多于男生的公司名称 url(r'getgirlgtboy',views.getgirlgtboy)
views.py 中创建 getgirlgtboy 函数

def getgirlgtboy(request):
companies = Company.objects.filter(c_girl_num__gt=F('c_boy_num'))
for company in companies:
# 进行遍历后查看公司名
print(company.c_name)
return HttpResponse("获取成功") 注:
F 导包 导入的是
from django.db.models import F


F 对象使用 算数表达式

def getgirlgtboy(request):
companies = Company.objects.filter(c_girl_num__lt=F('c_boy_num')-30)
# 查看男生比女生多于 30 的
for company in companies:
# 进行遍历后查看公司名
print(company.c_name)
return HttpResponse("获取成功")


Q 对象
过滤器的方法中的参数
常用于 组合条件 表名(models中创建的类) .objects.filter(Q(表中列名__条件=值)) 示例:
Student.objects.filter(Q(sage_lt=25)) Q对象支持 | & ~ 年龄大于等于 25 的
分析: 不小于 25

示例:
Student.objects.filter(~Q(sage_lt=25))

Q 对象可以对条件进行封装

封装后支持逻辑运算

与 &
或 |
非 ~

在 urls.py 中进行注册

url(r'getgirlandboy',views.getgirlandboy)
在 models.py 中添加 对应的函数 getgirlandboy

def getgirlandboy(request):
companies = Company.objects.filter(Q(c_boy_num__gt=90) & Q(c_girl_num__gt=80))
# 男生大于 90 且 女生大于 80 的公司名称
for company in companies:
# 进行遍历后查看公司名
print(company.c_name)
return HttpResponse("获取成功") 注:
且 : Q(条件) & Q(条件)
取反 : ~Q 表示取反
或 : Q(条件) | Q(条件)

运行结果

 


2020-05-11

Django学习路18_F对象和Q对象的更多相关文章

  1. 【Django】Django中的模糊查询以及Q对象的简单使用

    Django中的模糊查询: 需要做一个查找的功能,所以需要使用到模糊查询. 使用方法是:字段名加上双下划线跟上contains或者icontains,icontains和contains表示是否区分大 ...

  2. Django中F对象,Q对象与运算符

    在Django的模型中F对象与Q对象比较常用的,所以单独说一下: F对象 F对象位于django.dc.models模板下,使用的时候记得首先导入!!! 作用:F对象主要用于当模型的字段A与字段B进行 ...

  3. Django学习路32_创建管理员及内容补充+前面内容复习

    创建管理员 python manage.py createsuperuser   数据库属性命名限制 1.不能是python的保留关键字 2.不允许使用连续的下划线,这是由django的查询方式决定的 ...

  4. 14.-F对象和Q对象

    一.F对象 一个F对象代表数据库中某条记录的字段的信息 作用 通常是对数据库中的字段值在不获取的情况下进行操作 用于属性(字段)之间的比较   语法: from django.db.models im ...

  5. Django学习路21_views函数中定义字典及html中使用类实例对象的属性及方法

    创建 app6 在项目的 settings 中进行注册 INSTALLED_APPS 里面添加 'app6.apps.App6Config' 在 app6 的models.py 中创建数据表 clas ...

  6. Django学习——静态文件配置、request对象方法、pycharm如何链接数据库、Django如何指定数据库、Django orm操作

    静态文件配置 # 1.静态文件 网站所使用的已经提前写好的文件 css文件 js文件 img文件 第三方文件 我们在存储静态文件资源的时候一般默认都是放在static文件夹下 # 2.Django静态 ...

  7. Django学习路35_视图使用方法(复制的代码) + 简单总结

    from django.shortcuts import render,redirect from django.http import HttpResponse,JsonResponse from ...

  8. Django学习路34_models 文件创建数据表

    from django.db import models # Create your models here. class BookInfoManager(models.Manager): '''图书 ...

  9. Django学习路33_url 地址及删除元素 delete() 和重定向 return redirect('路径')

      保存日期 def create(request): '''新增一本图书''' # 1.创建BookInfo对象 b = BookInfo() b.btitle = '流星蝴蝶剑' b.bpub_d ...

随机推荐

  1. 使用phpQuery进行采集数据,模拟curl提升访问速度

    使用php采集网页数据一般有多种方法,有时候会使用正则去采集页面,但是当我们需要采集的页面大并且多的话,会严重的浪费我们的cpu,这时候我们可以使用phpQuer来进行采集,不知道phpQuery的童 ...

  2. Python3笔记010 - 3.1 程序结构

    第3章 流程控制语句 3.1 程序结构 程序设计的基本结构: 顺序结构---顺序执行所有语句 选择结构---选择执行部分语句 循环结构---循环执行部分语句 1.顺序结构 按照顺序执行语句. 2.选择 ...

  3. 线程基础知识01-Thread类,Runnable接口

    常见面试题:创建一个线程的常用方法有哪些?Thread创建线程和Runnable创建线程有什么区别? 答案通常集中在,继承类和实现接口的差别上面: 如果深入问一些问题:1.要执行的任务写在run()方 ...

  4. Vue-base64移动端PDF展示

    作为一个后端开发,写前端的一些功能也是头大,好在网友强大,网上资源比较多:做一个移动端PDF预览的功能,本来可以通过window.open(),打开的,但是没办法,做后台的小伙伴,传给前端的数据是ba ...

  5. MySQL调优 优化需要考虑哪些方面

    MySQL调优 优化需要考虑哪些方面   优化目标与方向定位 总体目标:使得响应时间更快,吞吐量更大. (throughout --- 吞吐量:单位时间内处理事务的数量) 如何找到需要优化的地方 使用 ...

  6. 关于ganymed-ssh2版本262和build210的SCPClient类的区别

    ganymed-ssh2是通过java使用ssh连接服务器的工具库,先上两个版本的pom文件配置: <!--ssh连接linux--> <!-- https://mvnreposit ...

  7. windows jenkins下配置sonar-scanner

    windows jenkins下配置sonar-scanner 一.基本配置信息 ① jenkins版本:2.222.4 ② sonarqube scanner版本:4.4.0.2170 ③ 操作系统 ...

  8. day21 模块与包+软件开发目录规范

    目录 一.导入模块的两种方式 二.模块搜索的路径的优先级 三.循环导入 四.区分py文件的两种用途 五.编写一个规范的模板 五.包 1 什么是包 2 为什么要有包 3 包的相关使用 3.1 在当前文件 ...

  9. Python 读取Excel之xlrd篇

    上一期给大家分享了如何用Python读取文本,这次给大家分享如何读取Excel表格内容,拿最常见的.xlsx和.xls格式来讲解. 本章主要知识点有: 读取整篇excel返回list[list[lis ...

  10. 数据可视化基础专题(七):Pandas基础(六) 数据增删改以及相关操作

    首先第一部还是导入 Pandas 与 NumPy ,并且要生成一个 DataFrame ,这里小编就简单的使用随机数的形式进行生成,代码如下: import numpy as np import pa ...