Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >django RawQuerySet 与QuerySet

django RawQuerySet 与QuerySet

作者头像
kirin
发布于 2020-11-23 04:49:11
发布于 2020-11-23 04:49:11
1.6K00
代码可运行
举报
文章被收录于专栏:Kirin博客Kirin博客
运行总次数:0
代码可运行

使用orm查询,得到的结果类型是QuerySet,这种类型drf可以进行下一步处理, 使用原生sql查询,例如

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
UserInfo.objects.raw(sql,(params))

得到的结果类型是RawQuerySet,这种类型drf不能进行下一步处理, 那么问题来了,我既想要用原生sql查询,又要使用drf处理结果,怎么办? 二者结合咯。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
看下图代码,select编写复杂的过滤条件
select = {
            'read_flag':'exists (select * from user_pro_notice  where user_id = %s and msg_id=pro_msg.id) '
        }
query = ProMsg.objects.filter(type=_type,project_id=project_id).extra(select=select,select_params=(user_id,)).order_by('-update_time')
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/11/19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Django之ORM其他骚操作
Django ORM执行原生SQL # extra # 在QuerySet的基础上继续执行子语句 # extra(self, select=None, where=None, params=None, tables=None, order_by=None, select_params=None) # select和select_params是一组,where和params是一组,tables用来设置from哪个表 # Entry.objects.extra(select={'new_id': "selec
人生不如戏
2018/04/12
1.1K0
Django学习笔记之Django ORM相关操作
<!-- p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px "PingFang SC"; color: #000000 } span.s1 { } span.s2 { font: 11.0px Helvetica } -->
Jetpropelledsnake21
2019/02/15
3.7K0
python 终级篇 django --
                                   一般操作                                             
py3study
2020/01/19
3K0
python 终级篇 django --
Django之QuerySet详解
在内部,创建、过滤、切片和传递一个QuerySet不会真实操作数据库,在你对查询集提交之前,不会发生任何实际的数据库操作。可以使用下列方法对QuerySet提交查询操作:
菲宇
2022/12/21
2.6K0
ORM常用操作
对于ForeignKey对象,clear()和remove()方法仅在null=True时存在
全栈程序员站长
2022/07/21
2.1K0
Django ORM那些相关操作
一般操作 https://docs.djangoproject.com/en/1.11/ref/models/querysets/         官网文档 常用的操作 <1> all(): 查询所有结果 <2> filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 <3> get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误。 <4> e
新人小试
2018/04/12
2.4K0
python测试开发django-78.ORM查询之extra
Django 的查询语法难以简单的表达复杂的 WHERE 子句,对于对于这种情况, Django 提供了 extra() 方法。 extra() 能在 QuerySet 生成的SQL从句中注入新子句,这样可以完成复制的查询。
上海-悠悠
2020/07/07
1.1K0
Django学习笔记之ORM字段和字段参数
对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。
Jetpropelledsnake21
2019/02/15
5.3K0
Django之ORM
Django默认使用的是sqlite,如果想使用mysql来存储数据,需要改变成相应的数据库引擎,具体如下:
py3study
2020/01/20
1.2K0
Django学习笔记之Queryset详解
    Django ORM用到三个类:Manager、QuerySet、Model。Manager定义表级方法(表级方法就是影响一条或多条记录的方法),我们可以以models.Manager为父类,定义自己的manager,增加表级方法;QuerySet:Manager类的一些方法会返回QuerySet实例,QuerySet是一个可遍历结构,包含一个或多个元素,每个元素都是一个Model 实例,它里面的方法也是表级方法,前面说了,Django给我们提供了增加表级方法的途径,那就是自定义manager类,而不是自定义QuerySet类,一般的我们没有自定义QuerySet类的必要;django.db.models模块中的Model类,我们定义表的model时,就是继承它,它的功能很强大,通过自定义model的instance可以获取外键实体等,它的方法都是记录级方法(都是实例方法,貌似无类方法),不要在里面定义类方法,比如计算记录的总数,查看所有记录,这些应该放在自定义的manager类中。以Django1.6为基础。
Jetpropelledsnake21
2018/08/01
2.9K0
05.Django基础五之django模型层(一)单表操作
      创建名为book的app,在book下的models.py中创建模型:
changxin7
2019/09/29
3.1K0
Django项目知识点(四)
URL是Web服务的入口,用户通过浏览器发送过来的任何请求,都是发送到一个指定的URL地址,然后被响应。
润森
2019/09/30
1.7K0
Django项目知识点(四)
Django学习笔记:QuerySet API
我们通常做查询操作的时候,都是通过模型名字.objects的方式进行操作。其实模型名字.objects是一个django.db.models.manager.Manager对象,而Manager这个类是一个“空壳”的类,他本身是没有任何的属性和方法的。他的方法全部都是通过Python动态添加的方式,从QuerySet类中拷贝过来的。
SingYi
2022/07/14
6930
Django学习笔记:QuerySet API
Django(19)QuerySet API[通俗易懂]
我们通常做查询操作的时候,都是通过模型名字.objects的方式进行操作。其实模型名字.objects是一个django.db.models.manager.Manager对象,而Manager这个类是一个“空壳”的类,他本身是没有任何的属性和方法的。他的方法全部都是通过Python动态添加的方式,从QuerySet类中拷贝过来的。示例图如下:
全栈程序员站长
2022/09/16
8020
Django(19)QuerySet API[通俗易懂]
Django-官网查询部分翻译(1.11版本文档)-QuerySet-字段查找-06
在 django 中要想创建一个数据对象,只需要实例化他,传入这个表模型类的关键字参数,然后调用 .save() 方法把这个对象保存到数据库中即可
suwanbin
2019/09/26
3K0
【Django】Django ORM 学习笔记
ORM,即Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作业务对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作对象的属性和方法。下面是一个示例。通过使用 ORM,我们只需要操作 Author 和 Blog 对象,而不用操作相关的数据库表。这里主要介绍一下 Django ORM 的相关使用。
零式的天空
2022/03/25
2.3K0
Django笔记(十一)实现对数据库的各种操作,比如分组,排序等
那么Django如果实现以上的功能,不仅仅以一个字段进行分组,而且还给查询出的字段起别名
一写代码就开心
2021/11/15
9630
Django笔记(十一)实现对数据库的各种操作,比如分组,排序等
Django中ORM操作
Django的orm操作本质上会根据对接的数据库引擎,翻译成对应的sql语句;所有使用Django开发的项目无需关心程序底层使用的是MySQL、Oracle、sqlite....,如果数据库迁移,只需要更换Django的数据库引擎即可;
緣來
2020/01/02
4.9K0
Django官方文档小结(二) -- QuerySet
字段查找是指定SQL WHERE子句的内容的方式。它们被指定为QuerySet方法的关键字参数filter(), exclude()并且get()。
Autooooooo
2020/11/09
1.9K0
Django内置权限扩展案例
overmind项目使用了Django内置的权限系统,Django内置权限系统基于model层做控制,新的model创建后会默认新建三个权限,分别为:add、change、delete,如果给用户或组赋予delete的权限,那么用户将可以删除这个model下的所有数据。
37丫37
2019/03/14
9400
Django内置权限扩展案例
相关推荐
Django之ORM其他骚操作
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验