专栏首页数据云团Django之ORM F与Q查询

Django之ORM F与Q查询

Django 的 ORM 是创建 SQL 去查询和操作数据库的一个 Python 式的方式。

  • F查询
  • Q查询

<1> F 查询

在前几个小章节里,构造的过滤器都只是将字段值与某个常量做比较。

如果要对两个字段的值做比较,那要怎么做呢?

Django 提供了 F() 来做这样的比较。F() 的实例可以在查询中引用字段,来比较同一个 model 实例中两个不同字段的值。

示例:

查询浏览数大于评论数的文章

Django 支持 F() 对象之间以及 F() 对象和常数之间的加减乘除和取模的操作。

修改操作也可以使用 F() 函数,比如将文章的浏览量增加100

如果要修改 char 字段怎么办?

例如:在所有标题后面加上(原创)

<2> Q 查询

filter() 等方法中的关键字参数查询都是一起进行 "AND"。如果需要执行更复杂的查询(例如:OR 语句)可以使用 Q 对象。

示例:

查询作者是“小团子”或“yuntuan”的文章

可以组合 & 和 | 操作符以及使用括号进行分组来编写任意复杂的 Q 对象。同时,Q 对象可以使用 ~ 操作符取反,这允许组合正常的查询和取反(NOT)查询。

示例:

查询作者名字是“小团子”并且不是2018年发表的文章的标题。

查询函数可以混合使用 Q 对象和关键字参数。所以提供给查询函数的参数(关键字参数或 Q 对象)都将"AND"在一起。但是,如果出现 Q 对象,它必须位于所有关键字参数的前面。

示例:

查询发布年份是2018或2019,文章标题中带“博客”的所有书。

本文分享自微信公众号 - 数据云团(SmartData),作者:云团小楠

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-02-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Django基础篇-admin系统

    通过定义 ModelAdmin 的子类,来定义模型在 Admin 界面的显示方式。

    小团子
  • Django之ORM 外键关联(三)

    Django 的 ORM 是创建 SQL 去查询和操作数据库的一个 Python 式的方式。

    小团子
  • 高级信管 | 软件设计

    在面向对象的基本概念中,_______体现对象间的交互,通过它向目标对象发送操作请求。

    小团子
  • Elasticsearch java api 基本搜索部分详解

    使用的是elasticsearch2.4.3版本,在此只是简单介绍搜索部分的api使用

    用户1518699
  • 认识九大经典sql模式

    小结果集,源表较少,查询条件直接针对源表 对于典型的OLTP应用,多为返回小结果集的查询。如果过滤条件直接针对源表,我们必须保证这些过滤条件高效,对于重要的字...

    java达人
  • Access查询设计界面

    大家好,上节介绍了Access查询的知识框架,其实Access数据库的查询的功能很类似于Excel表中的筛选功能,但是功能更为丰富和强大。

    无言之月
  • Access查询基础

    大家好,前面介绍了Access数据库表部分的内容,后面开始介绍Access数据库查询部分的内容。

    无言之月
  • 快速学习Oracle-子查询

    子查询:在一个查询的内部还包括另一个查询,则此查询称为子查询。 Sql的任何位置都可以加入子查询。

    cwl_java
  • 我的Mysql查询SQL优化总结

    当我们遇到一个慢查询语句时,首先要做的是检查所编写的 SQL 语句是否合理,优化 SQL 语句从而提升查询效率。所以对 SQL 有一个整体的认识是有必要的。

    程序员小明
  • Access生成表查询

    大家好前面已经介绍了选择查询、参数查询、交叉表查询,本节开始介绍操作查询部分内容。

    无言之月

扫码关注云+社区

领取腾讯云代金券