django中F表达式和Q函数应用与原理详解

 更新时间:2023年05月19日 09:33:36   作者:花开花落与云卷云舒  
F对象查询与Q对象查询,刚看到大家一定会感到很陌生,其实它们也是 Django 提供的查询方法,而且非常的简单的高效,下面这篇文章主要给大家介绍了关于django中F表达式和Q函数应用与原理的相关资料,需要的朋友可以参考下

一、F表达式

1.1 原理

F表达式是对数据库中某列值进行操作,允许还没有链接到数据的情况下对数据库字段的值进行操作,而不需要获取到对象放在内存中再对字段进行操作,直接执行原sql语句。

在通常情况下,我们在操作数据的时候都是先从数据库中将原数据取出放到内存中,然后再编辑某些属性,最后再提交。

1.2 应用

初始数据库数据

使用F字段直接进行数学运算

from django.db models import F
 res = models.Bbook.objects.all().update(read_num=F('read_num')+1)

操作之后,数据库中的数据都加5

Django中提供F 表达式, 就是将模型字段的值与同一模型中的另一个字段进行比较。

例如,查询read_num大于等于230的name:

from django.db.models import F
Game.objects.filter(bread__gte=F('read_num'))

F() 对象使用常量和其他 F() 对象的加法,减法,乘法,除法,模和幂运算。 

F()也可以具体到某一个字段的操作。

将阅读数增加100

Game.objects.update(price=F("read_num") + 100)

二、Q函数

2.1 原理

  • Q对象相当于查询时使用 or 语句 ;
  • Q对象可以使用 & 和 | 进行组合运算, 当一个操作符用于两个Q对象时,它就会生成一个新的Q对象;
  • Q对象可以用 “~” 操作符放在前面表示否定,也可允许否定与不否定形式的组合;
  • Q对象可以与关键字参数查询一起使用,不过一定要把Q对象放在关键字参数查询的前面;

2.2 例子

# 查询价格大于等于70并且标题是“J”开头的书
Book.objects.filter(Q(price__gte=70)&Q(title__startswith="J")) 
# 查询标题是“J”开头并且id不是3的书
Book.objects.filter(Q(title__startswith="J") & ~Q(id=3))  
# Q对象可以与关键字参数查询一起使用,必须把普通关键字查询放到Q对象查询的后面
print(Book.objects.filter(Q(price=70)|Q(title="Python"), publication_date="2017-09-26"))  

总结

到此这篇关于django中F表达式和Q函数应用与原理的文章就介绍到这了,更多相关django中F表达式和Q函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python数据分析与可视化的全面指南(从数据清洗到图表呈现)

    Python数据分析与可视化的全面指南(从数据清洗到图表呈现)

    Python 是数据分析与可视化领域中最受欢迎的编程语言之一,凭借其丰富的库和工具,Python 能够帮助我们快速处理、分析数据并生成高质量的可视化图表,本文将详细介绍 Python 中的数据分析与可视化的基础知识,并结合丰富的示例和技巧,帮助读者深入理解这些概念
    2025-06-06
  • Python可视化库之HoloViews的使用教程

    Python可视化库之HoloViews的使用教程

    本文主要为大家介绍了Python中一个优秀的可视化库—HoloViews,不仅能实现一些常见的统计图表绘制,而且其还拥有Matplotlib、Seaborn等库所不具备的交互效果,快跟随小编一起了解一下吧
    2022-02-02
  • 浅析python连接数据库的重要事项

    浅析python连接数据库的重要事项

    这篇文章主要介绍了python连接数据库的重要事项,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • Python脚本结合WPS多维表实现推送每日英语功能

    Python脚本结合WPS多维表实现推送每日英语功能

    这篇文章主要为大家详细介绍了一种Python利用WPS多维表和企业微信实现英语每日一句自动推送的教学辅助方法,文中的示例代码讲解详细,需要的小伙伴可以了解下
    2026-02-02
  • Django 按组控制权限类及定义方法详解

    Django 按组控制权限类及定义方法详解

    这篇文章主要为大家介绍了Django 按组控制权限类及定义方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • Python中pandas模块DataFrame创建方法示例

    Python中pandas模块DataFrame创建方法示例

    这篇文章主要介绍了Python中pandas模块DataFrame创建方法,结合实例形式分析了DataFrame的功能,以及pandas模块基于列表、字段与数组创建DataFrame的相关操作技巧,需要的朋友可以参考下
    2018-06-06
  • Python实现Linux监控的方法

    Python实现Linux监控的方法

    本文通过实例代码给大家介绍了Python实现Linux监控的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-05-05
  • 进一步探究Python的装饰器的运用

    进一步探究Python的装饰器的运用

    这篇文章主要介绍了更为深入的Python的装饰器的运用,Python的装饰器是Python学习进阶当中的重要知识点,需要的朋友可以参考下
    2015-05-05
  • Django实现简单分页功能的方法详解

    Django实现简单分页功能的方法详解

    这篇文章主要介绍了Django实现简单分页功能的方法,结合实例形式分析了django的第三方模块django-pure-pagination的安装、使用及实现分页的相关操作技巧,需要的朋友可以参考下
    2017-12-12
  • 将keras的h5模型转换为tensorflow的pb模型操作

    将keras的h5模型转换为tensorflow的pb模型操作

    这篇文章主要介绍了将keras的h5模型转换为tensorflow的pb模型操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05

最新评论