首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【愚公系列】2022年04月 Python教学课程 74-DRF框架之过滤

4.3 嵌套查找 4.4 参数说明 4.5 自定义过滤器 一、普通过滤 REST 框架通用列表视图默认行为返回模型管理整个查询。...通常,您希望 API 限制查询返回项目。 筛选子类任何视图查询最简单方法重写该方法。...1.针对当前用户进行筛选 您可能希望筛选查询,以确保仅返回与发出请求的当前经过身份验证用户相关结果。 为此,可以基于用户进行筛选。...筛选初始查询最后一个示例根据 url 中查询参数确定初始查询。...除了能够重写默认查询之外,REST 框架还包括对通用筛选后端支持,这些后端允许您轻松构造复杂搜索和筛选

2.5K30

Django】聚合在Django详细解析以及运用在企业级项目里方法

第一种方法从整个QuerySet生成摘要。例如,想计算所有在售图书平均价格。Django查询语法提供了一种描述所有藏书方法。 传递给聚合()参数描述了要计算聚合。...使用后,它将返回一个“name value”字典,其中“name”聚合标志,“value”计算聚合结果。名称是根据字段名称和聚合函数自动生成。...但是,有时要聚合属于所查询模型关联模型。 在聚合函数中指定聚合字段时,Django允许您在筛选相关字段时使用相同双下划线符号。Django将处理需要检索和聚合相关任何表连接。...在第一个查询中,注释优先于过滤器,因此过滤器不会影响注释。Distinct=True用于避免查询错误。 第二个查询查询每个出版商得分超过3图书数量。...过滤器优先于注释,因此过滤器限制了计算注释时要考虑对象。 第一个查询请求具有至少一本得分大于3平均得分。第二个查询仅请求得分超过3作者书平均分数。

2K40
您找到你想要的搜索结果了吗?
是的
没有找到

django_2

要求 修改数据库 Django shell 数据级联(一对多) 元信息 定义字段 模型过滤 创建对象4种方式 查询 过滤器 获取单个对象 字段查询 时间 聚合函数 跨关系查询 F对象 Q对象...Django有两种过滤器用于筛选记录: filter:返回符合筛选条件数据 exclude :返回不符合筛选条件数据 链式调用: 多个filter和exclude可以连接在一起查询 Person.objects.filter...概念:查询表示从数据库获取对象集合,查询可以有多个过滤器。...过滤器:过滤器就是一个函数,基于所给参数限制查询集结果,返回查询方法称为过滤器。 查询经过过滤筛选后返回新查询,所以可以写成链式调用。...第二个参数limit 懒查询/缓存 查询缓存:每个查询都包含一个缓存,来最小化对数据库访问 在新建查询集中,缓存首次为空,第一次对查询求值,会发生数据缓存,django会将查询出来数据做

3.6K30

Django学习笔记之Django ORM Aggregation聚合详解

Min, Sum, Avg >>> Publisher.objects.annotate(Count('book')) 返回QuerySet每个publisher都会一个属性book_count。...="Django").aggregate(Avg('price')) 可以根据聚合进行筛选: >>> Book.objects.annotate(num_authors=Count('authors'...但是第一个查询注解包含其该出版商发行所有图书总数;而第二个查询注解只包含出版过好书出版商所发行好书(评分大于3分)总数。在第一个查询中,注解在过滤器之前,所以过滤器对注解没有影响。...在第二个查询中,过滤器在注解之前,所以,在计算注解时,过滤器就限制了参与运算对象范围 order_by() 可以根据聚合进行排序 >>> Book.objects.annotate(num_authors...=Count('authors')).order_by('num_authors') values() 通常,注解annotate添加到每一个对象上,一个执行了注解操作查询 QuerySet 所返回结果中

1K20

Django之ORM对数据库操作

("book__title") ManyToManyField class RelatedManager "关联管理"在一对多或者多对多关联上下文中使用管理。...键名称是聚合标识符,计算出来聚合。键名称是按照字段和聚合函数名称自动生成出来。...': '小魔女', 'sum_price': Decimal('9.90')}]> F查询和Q查询 F查询 在上面所有的例子中,我们构造过滤器都只是将字段与某个常量做比较。...如果我们要对两个字段做比较,那该怎么做呢? Django 提供 F() 来做这样比较。F() 实例可以在查询中引用字段,来比较同一个 model 实例中两个不同字段。...所有提供给查询函数参数(关键字参数或Q 对象)都将"AND”在一起。但是,如果出现Q 对象,它必须位于所有关键字参数前面。 例如:查询出版年份2017或2018,书名中物语所有书。

1.3K110

Django JSONField SQL注入漏洞(CVE-2019-14234)分析与影响

0x01 什么JSONField Django一个大而全Web框架,其支持很多数据库引擎,包括Postgresql、Mysql、Oracle、Sqlite3等,但与Django天生为一对儿数据库莫过于...根据上面的分析可知,transform生成SQL查询中“键名”部分,那么如果我们控制了queryset查询键名,即可注入任意SQL语句了。...但是熟悉Django同学也应该知道,Djangoqueryset使用方法编写如下查询语句: .filter(detail__author='phith0n') 这个detail__author用户无法控制...0x04 Django-Admin SQL注入漏洞 我们创建一个Django项目并创建一个model,其中包含一个JSONField字段: class Collection(models.Model):...原因Django-Admin中就支持用户控制queryset查询键名,我在2017年在微博中说到过这一点,不过当时没有测过JSONField,sad。 ?

2K32

Django ORM那些相关操作

("book__title") ManyToManyField class RelatedManager “关联管理在一对多或者多对多关联上下文中使用管理。...键名称是聚合标识符,计算出来聚合。键名称是按照字段和聚合函数名称自动生成出来。...': '小魔女', 'sum_price': Decimal('9.90')}]> F查询和Q查询 F查询   在上面所有的例子中,我们构造过滤器都只是将字段与某个常量做比较。...如果我们要对两个字段做比较,那该怎么做呢?   Django 提供 F() 来做这样比较。F() 实例可以在查询中引用字段,来比较同一个 model 实例中两个不同字段。...所有提供给查询函数参数(关键字参数或Q 对象)都将"AND”在一起。但是,如果出现Q 对象,它必须位于所有关键字参数前面。 例如:查询出版年份2017或2018,书名中物语所有书。

2.3K60

Django】QuerySet以及Pickle 序列化在Django深度运用详解

还要注意,即使对未执行QuerySet进行切片并返回另一个未执行Query Set,也不允许对其进行进一步修改(例如,添加更多筛选或修改排序),因为它无法很好地转换为SQL,也没有明确含义。...Pickle序列化通常用作缓存前奏。重新加载缓存查询时,希望结果存在并可用(从数据库读取可能需要一些时间,这违反了缓存目的)。...为了实现这一点,大多数QuerySet方法返回一个新查询。本节稍后将详细介绍这些方法。...annotation()每个参数都是一个注释,将添加到返回QuerySet中每个对象。 Django提供聚合函数在以下聚合函数中进行了描述。...使用关键字参数指定注释使用关键字作为注释别名。匿名参数将根据聚合函数名称和聚合模型字段为其生成别名。只有引用单个字段聚合表达式才能成为匿名参数。其他所有内容都必须关键字参数。

1.7K10

Django篇(二)

更多模型字段,请参考Django官方文档。写明明白白。 查询 我们在Django中通过操作模型类去做增删改查,sql语句那么多,我们同样可以进行增删改查。 其中最复杂也就是查询了。...Q对象 以上我们都是单个条件进行查询,那如果多个条件呢? 我们可以在上面获取对象再次进行筛选,也就是注意中说那句话,但是很麻烦。 因此Django为我们提供了Q模块来帮助我们多条件查询。...上面返回一个字典: 比如查询所有人数目返回: {'id__count':} 年龄和: {'age__sum':} key字典加双下划线加聚合函数名字。...同样查询方式。 管理 什么管理? 我们每次查询时候都会是模型.objects.xxx。 这个objectsDjango帮我们自动生成管理对象。通过objects来帮助我们查询信息。...1、过滤查询,比如你查询全部数据,我只让你返回前十条。 2、添加新方法,比如添加,修改可以封装在里面方面我们使用。

1.3K20

Django 模型查询2.3

简介 查询表示从数据库中获取对象集合 查询可以含有零个、一个或多个过滤过滤器基于所给参数限制查询结果 从Sql角度,查询和select语句等价,过滤器像where和limit子句 接下来主要讨论如下知识点...查询 字段查询:比较运算符,F对象,Q对象 查询 在管理上调用过滤器方法会返回查询 查询经过过滤筛选后返回新查询,因此可以写成链式过滤 惰性执行:创建查询不会带来任何数据库访问...,[0:1].get()引发DoesNotExist异常 查询缓存 每个查询都包含一个缓存来最小化对数据库访问 在新建查询集中,缓存为空,首次对查询求值时,会发生数据库查询django会将查询结果存在查询缓存中...()、exclude()、get()参数 语法:属性名称__比较运算符= 表示两个下划线,左侧属性名称,右侧比较类型 对于外键,使用“属性名_id”表示外键原始 转义:like语句中使用了%...='八') 查询快捷方式:pk,pk表示primary key,默认主键id filter(pk__lt=6) 聚合函数 使用aggregate()函数返回聚合函数 函数:Avg,Count,

2.3K20

python 终级篇 django --

在一对多或者多对多关联上下文中使用管理。...键名称是聚合标识符,计算出来聚合。键名称是按照字段和聚合函数名称自动生成出来。...F查询 在上面所有的例子中,我们构造过滤器都只是将字段与某个常量做比较。...如果我们要对两个字段做比较,那该怎么做呢? Django 提供 F() 来做这样比较。F() 实例可以在查询中引用字段,来比较同一个 model 实例中两个不同字段。...所有提供给查询函数参数(关键字参数或Q 对象)都将"AND”在一起。但是,如果出现Q 对象,它必须位于所有关键字参数前面。 例如:查询出版年份2017或2018,书名中物语所有书。

2.8K20

Django学习笔记之Django ORM相关操作

("book__title") ManyToManyField class RelatedManager "关联管理"在一对多或者多对多关联上下文中使用管理。...键名称是聚合标识符,计算出来聚合。键名称是按照字段和聚合函数名称自动生成出来。...': '小魔女', 'sum_price': Decimal('9.90')}]> F查询和Q查询 F查询 在上面所有的例子中,我们构造过滤器都只是将字段与某个常量做比较。...如果我们要对两个字段做比较,那该怎么做呢? Django 提供 F() 来做这样比较。F() 实例可以在查询中引用字段,来比较同一个 model 实例中两个不同字段。...所有提供给查询函数参数(关键字参数或Q 对象)都将"AND”在一起。但是,如果出现Q 对象,它必须位于所有关键字参数前面。 例如:查询出版年份2017或2018,书名中物语所有书。

3.5K40

Django漏洞系列

产生该漏洞原因重复创建具有Unique约束键导致出发数据库Unique异常,并且没有对用户输入字符进行检查与转义。...,如果匹配上URL路由中最后一位/,而用户访问时候没加/,Django默认会跳转到/请求中。...在path开头为//example.com情况下,Django没做处理,导致浏览认为目的地址绝对路径,最终造成任意URL跳转漏洞,这里简单演示下吧!搭建环境,直接开干!...Django JSONField/HStoreField SQL注入漏洞 漏洞编号:CVE-2019-14234 开发者在Django中使用了JSONField/HStoreField,且用户可控queryset...在Django 3.0.3版本以下GIS查询功能模块(GPS定位相关模块)中存在SQL注入漏洞,其产生漏洞原因GIS聚合查询功能中,用户在oracle数据库且可控tolerance变量,并且要命未对该变量做任何用户输入检查

2.5K40

ORM常用操作

("book__title") 多对多关系操作 class RelatedManager “关联管理在一对多或者多对多关联上下文中使用管理。...键名称是聚合标识符,计算出来聚合。键名称是按照字段和聚合函数名称自动生成出来。...': '小魔女', 'sum_price': Decimal('9.90')}]> F查询/Q查询 F查询 在上面所有的例子中,我们构造过滤器都只是将字段与某个常量做比较。...如果我们要对两个字段做比较,那该怎么做呢? Django 提供 F() 来做这样比较。F() 实例可以在查询中引用字段,来比较同一个 model 实例中两个不同字段。...所有提供给查询函数参数(关键字参数或Q 对象)都将”AND”在一起。但是,如果出现Q 对象,它必须位于所有关键字参数前面。 例如:查询出版年份2017或2018,书名中物语所有书。

1.9K10

django模型

过滤器基于所给参数限制查询结果。 从SQL 角度,查询和SELECT 语句等 价,过滤像WHERE 和LIMIT 一样限制子句。 你可以从模型管理器那里取得查询。...但在通常情况下,你往往想要获取 完整数据一个子集。 要创建这样一个子集,你需要在原始查询上增加一些过滤条件。...(pub_date__year=2006) 利用默认管理器,它相当于: Entry.objects.all().filter(pub_date__year=2006) 链式过滤 查询筛选结果本身还是查询...最后结果仍然一个查询,它包含标题以”What“开 头、发布日期在2005年1月30日至当天之间所有记录 过滤查询独立 每次你筛选一个查询,得到都是全新另一个查询,它和之前查询之间没有任何绑...你可以将过滤器保持一整 天,直到查询 需要求值时,Django 才会真正运行这个查询

3.1K20

【愚公系列】2022年01月 Python教学课程 42-Django框架之ORM中查询详解

': 126} 注意aggregate返回一个字典类型,格式如下: {'属性名__聚合类小写':} 如:{'readcount__sum': 126} 使用count时一般不使用aggregate...例:查询图书总数。 BookInfo.objects.count() 注意count函数返回一个数字。 2....查询,也称查询结果、QuerySet,表示从数据库中获取对象集合。 当调用如下过滤器方法时,Django会返回查询(而不是简单列表): all():返回所有数据。...使用同一个查询,第一次使用时会发生数据库查询,然后Django会把结果缓存下来,再次使用这个查询时会使用缓存数据,减少了数据库查询次数。...情况一:如下两个查询,无法重用缓存,每次查询都会与数据库进行一次交互,增加了数据库负载。

1.9K40

Django—模型

list = BookInfo.objects.aggregate(Sum('bread')) 注意aggregate返回一个字典类型,格式如下: {'聚合类小写__属性名':} 如:{'sum...4.查询 查询表示从数据库中获取对象集合,在管理上调用某些过滤器方法会返回查询查询可以含有零个、一个或多个过滤器。...过滤器基于所给参数限制查询结果,从Sql角度,查询和select语句等价,过滤器像where和limit子句。 返回查询过滤器如下: all():返回所有数据。...在新建查询集中,缓存为空,首次对查询求值时,会发生数据库查询django会将查询结果存在查询缓存中,并返回请求结果,接下来对查询求值将重用缓存中结果。...books = models.Manager()  管理Manager   管理Django模型进行数据库操作接口,Django应用每个模型类都拥有至少一个管理

6.1K21
领券