前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django之ORM F与Q查询

Django之ORM F与Q查询

作者头像
小团子
发布2019-07-18 11:21:57
1K0
发布2019-07-18 11:21:57
举报
文章被收录于专栏:数据云团数据云团数据云团

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,文章标题中带“博客”的所有书。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-02-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据云团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档