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

Django框架学习(四)

,返回是不满足条件所有数据 order_by是排序,参数是排序字段 aggregate聚合,参数是聚合类,返回是一个字典 count没有参数,返回查询结果数量,返回是一个数字 1.2条件查询 注意...|filter(多类名__字段__条件=值) 查英雄:多类.objects.filter(外键属性__字段__条件=值) 2.查询 注意:对于queryset类对象,可以继续调用之前任何一个查询函数...:判断查询集中是否有数据。...两大特性: 1、惰性查询:只有在使用查询集中数据时才会进行数据库真正查询操作 2、查询结果缓存:如果使用同一个查询时,只有在第一次使用查询时会进行数据库查询操作,然后Django框架就会把查询结果存起来...,下一次再使用这个查询时候,使用Django之前存储结果。

1.5K41

Django篇(二)

更多模型字段,请参考Django官方文档。写明明白白。 查询 我们在Django中通过操作模型类去做增删改查,sql语句那么多,我们同样可以进行增删改查。 其中最复杂也就是查询了。...,Max,Mix 聚合函数实例 使用聚合函数需要使用aggregate来操作 查询所有数目 student.objects.all().aggregate(Count('id')) 查询年龄(age...count函数 查询所有数目也可以这样写 student.objects.all().count() 注意:当返回值类型为QuerySet类型时,我们称他为一个查询可以再次进行以上任何操作。...2、缓存 当我们使用同一个查询时候,只有第一次是执行到数据库,然后把结果储存起来,当我们再次使用这个查询时候,就会调用我们缓存中数据。...查询相当于一个列表,我们取值可以遍历取出,也可以进行下表或者切片取出。 当我们对一个查询进行切片或下标查询,会返回一个新查询。 不同是我们切片不允许为负值。 判断一个查询是否有数据。

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

django_2

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

3.6K30

Django MVT之M

所有数据字段属性都必须继承自抽象类django.db.models.Field,开发者可以继承该抽象类来定义自己字段类型,当然也可以使用Django自带一系列Field子类。...缓存: 当使用是同一个查询时,第一次使用时候会发生实际数据库查询,然后把结果缓存起来,之后再使用这个查询时,使用是缓存中结果。...可以对一个查询进行取下标或切片操作,切片操作会产生一个新查询。与python列表不同是,下标不允许为负数。...谓词 Django查询条件是一种独特字段查询表达方式,表现形式为: 字段名称__谓词=值 即用‘双下划线连接字段名称和谓词’来表示查询条件。...().aggregate(Avg('age')) 可以不使用聚合类直接在QuerySet对象调用count方法,返回值是一个整数 # 查询所有学生数量 StudentInfo.objects.all(

99710

Django—模型

4.查询 查询表示从数据库中获取对象集合,在管理器上调用某些过滤器方法会返回查询查询可以含有零个、一个或多个过滤器。...缓存:使用同一个查询,第一次使用时会发生数据库查询,然后把结果缓存下来,再次使用这个查询时会使用缓存数据。 查询缓存 每个查询都包含一个缓存来最小化对数据库访问。...情况一:如下是两个查询,无法重用缓存,每次查询都会与数据库进行一次交互,增加了数据库负载。...限制查询 可以查询进行取下标或切片操作,等同于sql中limit和offset子句。   注意:不支持负数索引。 对查询进行切片后返回一个新查询,不会立即执行查询。..._meta.get_field("field") # 括号内为字段,类型是字符串 all_data = filter_field_obj.rel.to.objects.all() # 根据字段查询该表所有数据查询

6.1K21

Django之QuerySet详解

dates() 根据日期获取查询 datetimes() 根据时间获取查询 none() 创建空查询 all() 获取所有的对象 union() 并 intersection...匿名参数别名将基于聚合函数名称和模型字段生成。 只有引用单个字段聚合表达式才可以使用匿名参数。 其它所有形式都必须用关键字参数。...当最初获取数据时不知道是否需要这些特定字段情况下,如果正在使用查询结果,可以告诉Django不要从数据库中检索它们。...每个延迟字段将在你访问该字段时从数据库中检索(每次只检索一个,而不是一次检索所有的延迟字段)。 可以多次调用defer()。...如果有一个模型几乎所有字段需要延迟,使用only()指定补充字段可以使代码更简单。 假设有一个包含字段biography、age和name模型。

2.3K20

Django 聚合查询API实现侧边栏

本文从Django官方文档总结而来,将聚合主要用法和查询常见方法做一归纳。 聚合 1....聚合产生来源于django数据库查询,通常我们使用django查询来完成增删查改,但是有时候需要更复杂方法才能完成对数据提取、筛选、更改,所以需要一组对象聚合来完成这种操作。...以上提及方法、字段查找和聚合函数将在查询API中介绍。那么,我们先介绍聚合。...,但只有作者名称和average_rating 注解会返回在输出结果中 4.查询(QuerySet)API 查询 本质上,可以创建、过滤、切片和传递查询而不用真实操作数据库。...可以通过迭代、切片、序列化/缓存、repr()、len()、list()、bool() 1)返回新查询方法 filter(): 返回一个新QuerySet,包含与给定查询参数匹配对象。

1.4K20

提高Djang查询速度9种方法

索引优化索引是提高数据库查询性能重要手段。在Django中,我们可以使用db_index属性在模型字段上创建索引。...查询延迟加载在Django中,查询是惰性加载,只有在需要数据时才会执行数据库查询。这意味着我们可以链式调用多个方法来对查询进行逐步优化,而不必立即执行查询。...使用values()和values_list()方法选择需要字段默认情况下,查询返回完整模型对象。...使用annotate()进行聚合查询Djangoannotate()方法可以进行聚合查询,它可以查询时计算额外聚合值,并将结果添加到每个对象上。...使用F()和Q()对象进行复杂查询DjangoF()对象和Q()对象提供了一种方便方式来构建复杂查询。F()对象可以查询中引用模型字段,而Q()对象可以组合多个查询条件。

24720

Django相关知识点回顾

all 无 查询模型类对应表格中所有数据 QuerySet(查询) get 查询条件 查询满足条件一条且只能有一条数据 模型类对象,查不到会报错DoesNotExist filter 查询条件 返回满足条件所有数据...QuerySet(查询) exclude 查询条件 返回不满足条件所有数据 QuerySet(查询) order_by 排序字段查询结果进行排序 QuerySet(查询) aggregate...聚合 查询时进行聚合操作 字典:{'属性名_聚合类小写':值} count 无 返回查询结果数目 数字 条件查询: 对应get,filter,exclude参数中可以查询条件 格式:属性名__条件名...这4个函数返回查询对象 特点 可以像list一样进行操作,可以遍历、取下标、进行切片,切片时下标不允许为负数。...查询结果缓存 使用同一个查询时,只有在第一次使用查询时会进行数据库查询操作,然后Django框架就会把查询结果存起来,下一次再使用这个查询时,使用Django之前存储结果。

10K51

Django 模型查询2.3

简介 查询表示从数据库中获取对象集合 查询可以含有零个、一个或多个过滤器 过滤器基于所给参数限制查询结果 从Sql角度,查询和select语句等价,过滤器像where和limit子句 接下来主要讨论如下知识点...查询 字段查询:比较运算符,F对象,Q对象 查询 在管理器上调用过滤器方法会返回查询 查询经过过滤器筛选后返回新查询,因此可以写成链式过滤 惰性执行:创建查询不会带来任何数据库访问...():返回第一个对象 last():返回最后一个对象 exists():判断查询集中是否有数据,如果有则返回True 限制查询 查询返回列表,可以使用下标的方式进行限制,等同于sql中limit和...,[0:1].get()引发DoesNotExist异常 查询缓存 每个查询都包含一个缓存来最小化对数据库访问 在新建查询集中,缓存为空,首次对查询求值时,会发生数据库查询django会将查询结果存在查询缓存中...,并返回请求结果,接下来对查询求值将重用缓存结果 情况一:这构成了两个查询,无法重用缓存,每次查询都会与数据库进行一次交互,增加了数据库负载 print([e.title for e in Entry.objects.all

2.3K20

django 1.8 官方文档翻译: 2-5-4 聚合 (初稿)

第一种方法是从整个查询生成统计值。比如,你想要计算所有在售书平均价钱。Django查询语法提供了一种方式描述所有图书集合。...键名称是按照字段聚合函数名称自动生成出来。如果你想要为聚合值指定一个名称,可以聚合子句提供它。...在聚合函式中指定聚合字段时,Django 允许你使用同样 双下划线 表示关联关系,然后 Django 在就会处理要读取关联表,并得到关联对象聚合。...和 跨关系查找方法类似,作用在你所查询模型关联模型或者字段聚合和注解可以遍历”反转”关系。...这个行为与查询文档中提到 distinct() 一样,而且生成规则也一样:一般情况下,你不想在结果中由额外字段扮演这个角色,那就清空排序项,或是至少保证它仅能访问 values()中字段

1.6K30

Django ORM 知识概要

permissions 定义权限 managed 是否按照Django规则管理模型类 默认是True unique_together=()/((),()) 对应MySQL中联合唯一约束 app_label...values(),values_list() 获取字典或者元组形式结果 dates(),datetimes() 根据时间日期获取查询 union(),intersection(),difference...() 并,交集,差;MySQL Innodb 只支持并 select_related() 一对一、多对一查询优化,prefetch_related() 一对多、多对多查询优化。...反向查询 annotate() 使用聚合计数,求和,平均数,raw() 执行原生SQL annotate()对分组后结果进行统计 Model.objects.get().子表表名 _set.all...,统计个数,聚合 aggregate() 是对这个数据表中数据进行统计 自定义聚合查询 F对象和Q对象 F对象:操作字段数据 Q对象:结合 AND , OR ,NOT, | , ~ , & 实现复杂查询

1.8K20

Python全栈开发之Django基础

,用于最后一次修改时间戳,默认为False,auto_now_add表示当对象第一次创建时自动设置当前时间,用于创建时时间戳,默认为False TimeField: 时间字段,同上 DateTimeField...() 查询 查询表示从数据库中查询对象集合 返回查询过滤器 all():返回所有数据 filter(): 返回满足条件数据 exclude(): 返回不满足条件数据 order_by()...): 返回当前查询结果总条数 aggregate(): 聚合,返回一个字典 判断一个查询集中是否有数据 两个特性 惰性 创建查询不会访问数据库,直到调用数据时,才会访问数据库 缓存 使用同一个结果...,第一次使用会触发查询数据库,然后将结果缓存下载,再次使用直接调用缓存 限制结果 可以对结果进行切片操作,等同于数据库中分页操作,但是不支持负数 list = BookInfo.objects.all...一般是浏览器),浏览器会将Cookiekey/value保存到某个目录下文本文件内,下次请求同一网站时就发送该Cookie给服务器,Cookie名称和值可以由服务器端开发自己定义,这样服务器可以知道该用户是否是合法用户以及是否需要重新登录等

3.7K20

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

当第一次迭代它时,它将执行其数据库查询。例如,这将打印数据库中所有条目的标题。...表达式可以是简单值、对模型(或任何相关模型)字段引用,或计算与QuerySet中对象相关对象聚合表达式(平均值、总和等)。...annotation()每个参数都是一个注释,将添加到返回QuerySet中每个对象。 Django提供聚合函数在以下聚合函数中进行了描述。...使用关键字参数指定注释使用关键字作为注释别名。匿名参数将根据聚合函数名称和聚合模型字段为其生成别名。只有引用单个字段聚合表达式才能成为匿名参数。其他所有内容都必须是关键字参数。...,即使是默认排序,也可以在不带参数情况下调用order() 可以检查QuerySet有序属性确定查询是否排序。

1.7K10

Django中Aggregation聚合基本使用方法

Django filter、exclude 等方法使得对数据库查询很方便了。这在数据量较小时候还不错,但如果数据量很大,或者查询条件比较复杂,那么查询效率就会很低。...对于以便捷著称 Django,怎么能忍受这样事。于是就有了 Aggregation聚合 。...annotate 翻译过来就是 注解 ,它作用有点像给 QuerySet 中每个元素临时贴上一个临时字段字段值是分组聚合运算结果。...比方说要给查询集中每本书籍都增加一个字段字段内容是外链到书籍作者数量: from django.db.models import Count q = Book.objects.annotate...(a_count=Count('authors')) 跨外链查询字段也是可以: s = Store.objects.annotate(min_price=Min('books__price')

1.1K20

Django】 开发:数据库操作和后台管理

__range: 查找数据是否在指定区间范围内 # 查找年龄在某一区间内所有作者 Author.objects.filter(age__range=(35,50)) # 等同于 SELECT ......(age__gt=65) auths.delete() 聚合查询 聚合查询是指对一个数据表中一个字段数据进行部分或全部进行统计查询,查bookstore_book数据表中全部书平均价格,查询所有总个数等...,都要使用聚合查询 不带分组聚合 不带分组聚合查询是指导将全部数据进行集中统计查询 聚合函数【需要导入】: 导入方法: from django.db.models import * 聚合函数: Sum...分组聚合是指通过计算查询结果中每一个对象所关联对象集合,从而得出总计值 (也可以是平均值或总和),即为查询每一项生成聚合。...list_display_links 可以控制 list_display 中字段是否应该链接到对象 “更改” 页面。

4K40

ORM常用操作

名称是聚合标识符,值是计算出来聚合值。键名称是按照字段聚合函数名称自动生成出来。.../Q查询 F查询 在上面所有的例子中,我们构造过滤器都只是将字段值与某个常量做比较。...如果我们要对两个字段值做比较,那该怎么做呢? Django 提供 F() 来做这样比较。F() 实例可以查询中引用字段,来比较同一个 model 实例中两个不同字段值。...所有提供给查询函数参数(关键字参数或Q 对象)都将”AND”在一起。但是,如果出现Q 对象,它必须位于所有关键字参数前面。 例如:查询出版年份是2017或2018,书名中带物语所有书。...) # 条件查询 # 条件可以是:参数,字典,Q def select_related(self, *fields) 性能相关:表之间进行join连表操作,一次性获取关联数据

2K10

python 终级篇 django --

") # 找到第一个出版社出版所有书名 指定了    ForeignKey   字段     related_name="xx"        xx  可以替代  book_set publisher_obj...键名称是聚合标识符,值是计算出来聚合值。键名称是按照字段聚合函数名称自动生成出来。...Q查询                                F查询 在上面所有的例子中,我们构造过滤器都只是将字段值与某个常量做比较。...如果我们要对两个字段值做比较,那该怎么做呢? Django 提供 F() 来做这样比较。F() 实例可以查询中引用字段,来比较同一个 model 实例中两个不同字段值。...) # 条件查询 # 条件可以是:参数,字典,Q def select_related(self, *fields) 性能相关:表之间进行join连表操作,一次性获取关联数据

2.8K20
领券