首页 > 其他分享 >16 Django-extra查询

16 Django-extra查询

时间:2022-08-18 10:59:06浏览次数:55  
标签:None 16 create extra Django blog article select

知识点补充:
image

如何只拿出,dt字段中的年月字段?
image


知识点补充:extra

有些时候复杂的sql语句,Django无法去对应。

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

有些情况下,Dj ango的查询语法难以简单的表达复杂的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 > '2017-09- -05'"})
结果集中每个Entry 对象都有一个额外的属性is_ recent, 它是一个布尔值, 表示Article对象的create_ time是否晚于2017-09-05

练习1:

ret = models.Article.objects.extra(select={'is_recent': 'create_time > "2020-09-05"'}).values("title", "is_recent")

# <QuerySet [{'is_recent': 1, 'title': 'nginx的使用方式哈哈哈哈'}, {'is_recent': 1, 'title': 'python-mysql哈哈哈哈哈'}]>

# SELECT (create_time > "2020-09-05") AS `is_recent`, `blog_article`.`nid`, `blog_article`.`title`, `blog_article`.`desc`, `blog_article`.`create_time`, `blog_article`.`content`, `blog_article`.`comment_count`, `blog_article`.`up_count`, `blog_article`.`down_count`, `blog_article`.`user_id`, `blog_article`.`category_id` FROM `blog_article`

练习2:

ret = models.Article.objects.extra(select={'y_m_d_date': 'date_format(create_time, "%%Y-%%m-%%d")'}).values("title", "y_m_d_date")

print(ret)
# <QuerySet [{'y_m_d_date': '2022-08-17', 'title': 'nginx的使用方式哈哈哈哈'}, {'y_m_d_date': '2022-08-17', 'title': 'python-mysql哈哈哈哈哈'}]>

select参数,相当于对每一条查询的数据插入一个字段,如y_m_d_date。在格式化时间格式的字段,生成新的字段如 y_m_d_date

标签:None,16,create,extra,Django,blog,article,select
From: https://www.cnblogs.com/it-lkp/p/16597911.html

相关文章

  • 从零开始配置 vim(16)——启动界面配置
    不知道各位小伙伴用过spacevim或者LunarVim又或者doomvim或者其他的什么vim配置框架,我们发现他们的启动界面都做的比较好看,而我们默认进入的启动界面则显得比较素......
  • django插入数据库报错 1366, "Incorrect string value: '\\xF0\\x9F\\x9A\\xA
     报错: 1366,"Incorrectstringvalue:'\\xF0\\x9F\\x9A\\xA8 是因为mysql不能识别4个字节的utf8编码的字符,抛出了异常,这应该也是问题的根源。☺、��、类似于这种4个字......
  • luogu P1721 [NOI2016] 国王饮水记
    题面传送门首先我们发现,一定不会有低于\(h_1\)的参与操作的过程。然后考虑一个\(x\)与比它大的\(y<z\),则发现一定是先\((x,y)\),再\((\frac{x+y}{2},z)\)更好。因为这样......
  • 「CF1661E」 Narrow Components
    \(\texttt{「CF1661E」NarrowComponents}\)\(\texttt{Describe}\)给你一个\(3\)行\(n\)列的\(01\)矩阵\(a\),其中\(0\)表示黑色格子,\(1\)表示白色格子。再给......
  • [AcWing 166] 数独
    DFS+剪枝+位运算优化点击查看代码#include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;constintN=9,M=1<<N;intones[M];//on......
  • django-haystack使用whoosh创建索引
    快速入门环境安装首先需要清楚以下各个库的作用django是基于python开发的web框架,阅读本文需要了解相关的基础知识django-haystack为Django提供模块化搜索。它具有......
  • [AcWing 165] 小猫爬山
    DFS剪枝点击查看代码#include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;constintN=50+10;intn,m;intw[N];intsum[N];//每组......
  • 16js运动
     运动概述运动主要是动画的操作,主要是操作某个document元素的属性变化(位置变化)运动主要的三步骤使用定时器来定时更改对应的内容实时获取对应的元素的属性及相关......
  • 2022-08-16 第五组 赖哲栋 学习笔记
    DQL数据库查询语言重点,DQL是我们每天都要接触编写最多也是最难的SQL,该语言用来查询记录,不会修改数据库和表结构。构建数据库创建一张student表:DROPTABLEIFEXISTSst......
  • Django连接MySQL与正反向迁移命令
    目录连接MySQL方法一:pymysql连接方法二:mysqlclient迁移命令连接MySQL方法一:pymysql连接第一步:修改settings.py配置文件中的DATABASES:DATABASES={'default':{......