Django框架 查询Extra功能实现解析


Posted in Python onSeptember 04, 2019

extra

extra(select=None, where=None, params=None,
   tables=None, order_by=None, select_params=None)

有些情况下,Django的查询语法难以简单的表达复杂的 WHERE 子句,对于这种情况, Django 提供了 extra() QuerySet修改机制 — 它能在 QuerySet生成的SQL从句中注入新子句。

extra可以指定一个或多个 参数,例如 select, where or tables. 这些参数都不是必须的,但是你至少要使用一个!要注意这些额外的方式对不同的数据库引擎可能存在移植性问题.(因为你在显式的书写SQL语句),除非万不得已,尽量避免这样做.

参数之select

The select 参数可以让你在 SELECT 从句中添加其他字段信息,它应该是一个字典,存放着属性名到 SQL 从句的映射。

queryResult=models.Article




 .objects.extra(select={'is_recent': "create_time > '2018-04-18'"})

结果集中每个 Entry 对象都有一个额外的属性is_recent, 它是一个布尔值,表示 Article对象的create_time 是否晚于2018-04-18.

练习:

# in sqlite:
  article_obj=models.Article.objects






.filter(nid=1)







.extra(select={"standard_time":"strftime('%%Y-%%m-%%d',create_time)"})







.values("standard_time","nid","title")
  print(article_obj)
  # <QuerySet [{'title': 'MongoDb 入门教程', 'standard_time': '2017-09-03', 'nid': 1}]>

参数之where /tables

您可以使用where定义显式SQL WHERE子句 - 也许执行非显式连接。您可以使用tables手动将表添加到SQL FROM子句。

where和tables都接受字符串列表。所有where参数均为“与”任何其他搜索条件。

练习:

queryResult=models.Article




 .objects.extra(where=['nid in (1,3) OR title like "py%" ','nid>2'])

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python数据结构之二叉树的统计与转换实例
Apr 29 Python
python使用PIL给图片添加文字生成海报示例
Aug 17 Python
django session完成状态保持的方法
Nov 27 Python
python random从集合中随机选择元素的方法
Jan 23 Python
Django stark组件使用及原理详解
Aug 22 Python
python线程join方法原理解析
Feb 11 Python
python如何查看网页代码
Jun 07 Python
win10安装python3.6的常见问题
Jul 01 Python
keras的三种模型实现与区别说明
Jul 03 Python
Python中快速掌握Data Frame的常用操作
Mar 31 Python
python - asyncio异步编程
Apr 06 Python
进行数据处理的6个 Python 代码块分享
Apr 06 Python
Django框架 Pagination分页实现代码实例
Sep 04 #Python
python 动态迁移solr数据过程解析
Sep 04 #Python
Django框架 信号调度原理解析
Sep 04 #Python
Django Admin中增加导出Excel功能过程解析
Sep 04 #Python
Django Admin中增加导出CSV功能过程解析
Sep 04 #Python
Python 自动登录淘宝并保存登录信息的方法
Sep 04 #Python
通过Python编写一个简单登录功能过程解析
Sep 04 #Python
You might like
一个简单的PHP投票程序源码
2007/03/11 PHP
PHP的5个安全措施小结
2012/07/17 PHP
php站内搜索关键词变亮的实现方法
2014/12/30 PHP
php正则表达式基本知识与应用详解【经典教程】
2017/04/17 PHP
Jquery 高亮显示文本中重要的关键字
2009/12/24 Javascript
很棒的学习jQuery的12个网站推荐
2011/04/28 Javascript
基于JQUERY的两个ListBox子项互相调整的实现代码
2011/05/07 Javascript
jquery仿京东导航/仿淘宝商城左侧分类导航下拉菜单效果
2013/04/24 Javascript
JavaScript删除指定子元素代码实例
2015/01/13 Javascript
js兼容火狐显示上传图片预览效果的方法
2015/05/21 Javascript
JS实现自动固定顶部的悬浮菜单栏效果
2015/09/16 Javascript
JS模拟按钮点击功能的方法
2015/12/22 Javascript
JavaScript——DOM操作——Window.document对象详解
2016/07/14 Javascript
简洁实用的BootStrap jQuery手风琴插件
2016/08/31 Javascript
javascript读取文本节点方法小结
2016/12/15 Javascript
Javascript ES6中数据类型Symbol的使用详解
2017/05/02 Javascript
vue 2.0封装model组件的方法
2017/08/03 Javascript
vue项目搭建以及全家桶的使用详细教程(小结)
2018/12/19 Javascript
深入浅出了解Node.js Streams
2019/05/27 Javascript
Vue函数式组件的应用实例详解
2019/08/30 Javascript
JS函数进阶之继承用法实例分析
2020/01/15 Javascript
es6 super关键字的理解与应用实例分析
2020/02/15 Javascript
Vue.js实现立体计算器
2020/02/22 Javascript
记一次react前端项目打包优化的方法
2020/03/30 Javascript
[20:46]Ti4循环赛第三日VG vs DK
2014/07/12 DOTA
python实现从网络下载文件并获得文件大小及类型的方法
2015/04/28 Python
Fiddler如何抓取手机APP数据包
2016/01/22 Python
python的xpath获取div标签内html内容,实现innerhtml功能的方法
2019/01/02 Python
Pycharm2020.1安装中文语言插件的详细教程(不需要汉化)
2020/08/07 Python
Melijoe美国官网:法国奢侈童装购物网站
2017/04/19 全球购物
英文简历中的自我评价用语
2013/12/09 职场文书
幼儿园门卫岗位职责
2014/02/14 职场文书
单位未婚证明范本
2014/11/25 职场文书
公司内部升职自荐信
2015/03/27 职场文书
催款律师函范文
2015/05/27 职场文书
5个实用的JavaScript新特性
2022/06/16 Javascript