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

Django项目知识点(四)

exclude() 排除满足条件的对象 annotate() 使用聚合函数 order_by() 对查询集进行排序 reverse() 反向排序 distinct() 对查询集去重...dates() 根据日期获取查询集 datetimes() 根据时间获取查询集 none() 创建空的查询集 all() 获取所有的对象 union() 并集 intersection...() 交集 difference() 差集 select_related() 附带查询关联对象 prefetch_related() 预先查询 extra() 附加SQL查询...当我们需要对查询集(queryset)的某些字段进行计算或进行先分组再计算或排序, 我们就需要使用aggregate和annotate方法了。...这样就可以引用模型字段值并使用它们执行数据库操作,而无需实际将它们从数据库中拉出到Python内存中 说白了就是我从数据库拿东西,但是有些需要的字段没有,要通过绑定的外键的app的model拿。

1.6K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Django ORM 知识概要

    Django中带的migrations数据表中更改数据库记录 字段 常用的字段 自增长字段 models.AutoField() models.BigAutoField() 二进制数据 models.BinaryField...SET_NULL:将引用设置为NULL(要求字段可以为空),当字段设置null=True才可以使用 SET_DEFAULT:设置默认值。...permissions 定义权限 managed 是否按照Django规则管理模型类 默认是True unique_together=()/((),()) 对应MySQL中的联合唯一约束 app_label...() 并集,交集,差集;MySQL Innodb 只支持并集 select_related() 一对一、多对一查询优化,prefetch_related() 一对多、多对多查询优化。...,统计个数,聚合 aggregate() 是对这个数据表中的数据进行统计 自定义聚合查询 F对象和Q对象 F对象:操作字段的数据 Q对象:结合 AND , OR ,NOT, | , ~ , & 实现复杂的查询

    1.8K20

    django select_related和prefetch_related的用法与区别

    INTERNAL_IPS = [ # … ‘127.0.0.1’, # … ] 当你安装好debug_toolbar后,启动django服务器,打开任何一个页面你都可以看到查询数据库所花时间以及是否有相似及重复的查询...它提示我们查询了10次数据库,包括3次重复查询,一共耗时8.93ms。 什么?显示一个页面竟用了10次查询?是的,你没看错。...现在我们对article_list视图函数稍微进行修改,加入select_related方法,在查询文章列表时同时一次性获取相关联的category对象信息,这样在模板中调用 {{ article.category.name...如果不确定是否有重复查询,可使用django-debug-toolbar查看。...对与单对单或单对多外键ForeignKey字段,使用select_related方法 对于多对多字段和反向外键关系,使用prefetch_related方法 两种方法均支持双下划线指定需要查询的关联对象的字段名

    1.4K20

    Django admin管理工具

    admin组件使用 Django 提供了基于 web 的管理工具。 Django 自动管理工具是 django.contrib 的一部分。...激活管理工具 通常我们在生成项目时会在 urls.py 中自动设置好, from django.conf.urls import url from django.contrib import admin...在admin.py中只需要讲Mode中的某个类注册,即可在Admin中实现增删改查的功能,如: admin.site.register(models.UserInfo) 但是,这种方式比较简单,如果想要进行更多的定制操作...4. list_select_related,列表时,连表查询是否自动select_related 5. list_editable,列表时,可以编辑的列  @admin.register(models.UserInfo...= ('FK字段', 'M2M字段',) 12  fields,详细页面时,显示字段的字段 @admin.register(models.UserInfo) class UserAdmin(admin.ModelAdmin

    1K10

    从0开始做系统

    在app中的models中定义好字段。...,默认会生成一个名称为 id 的列,如果要显示的自定义一个自增列,必须将给列设置为主键 primary_key=True。...list_select_related,列表时,连表查询是否自动select_related list_editable,列表时,可以编辑的列 search_fields,列表时,模糊搜索的功能 date_hierarchy...,列表时,对Date和DateTime类型进行搜索 inlines,详细页面,如果有其他表和当前表做FK,那么详细页面可以进行动态增加和删除 action,列表时,定制action中的操作 定制HTML...模板 raw_id_fields,详细页面,针对FK和M2M字段变成以Input框形式 fields,详细页面时,显示字段的字段 exclude,详细页面时,排除的字段 readonly_fields,

    1.4K30

    Django学习笔记之Queryset详解

    manager类,而不是自定义QuerySet类,一般的我们没有自定义QuerySet类的必要;django.db.models模块中的Model类,我们定义表的model时,就是继承它,它的功能很强大...注意:这里只是查询Entry表,返回的a的每条记录只包含Entry表的字段值,不管Entry的model中是否有onetoone、onetomany、manytomany字段,都不会关联查询。...with the headline Test")  同样不建议这种方法判断是否为空,而应该使用QuerySet.exists(),查询效率高。...select_related是用select ……join来返回关联的表字段,而prefetch_related是用多条SQL语句的形式查询,一般,后一条语句用IN来调用上一句话返回的结果。...2.4.11  exists()、count()、len() 如果只是想知道一个QuerySet是否为空,而不想获取QuerySet中的每个元素,那就用exists(),它要比len()、count()

    2.7K30

    37.Django1.11.6文档

    , 在单一的字段集,和在模块中定义的字段有相同的顺序 ModelAdmin.fieldsets 设置fieldsets 控制管理“添加”和 “更改” 页面的布局. fieldsets 是一个以二元元组为元素的列表...也就是说,list_editable中列出的字段将在更改列表页面上显示为表单小部件,允许用户一次编辑和保存多行。...ModelAdmin.list_select_related 设置list_select_related以告诉Django在检索管理更改列表页面上的对象列表时使用select_related()。 ...ModelAdmin.search_fields search_fields 设置启用Admin 更改列表页面上的搜索框。 此属性应设置为每当有人在该文本框中提交搜索查询将搜索的字段名称的列表。...例如,您可能希望通过整数字段搜索,或使用外部工具(如Solr或Haystack)。您必须确定通过搜索方法实现的查询集更改是否可能在结果中引入重复项,并在返回值的第二个元素中返回True。

    24.4K80

    07.Django学习之model进阶

    通常,查询集 的切片返回一个新的查询集 —— 它不会执行查询。...查询集 是惰性执行的 —— 创建查询集不会带来任何数据库的访问。...的缓存中并返回明确请求的结果(例如,如果正在迭代查询集,则返回下一个结果)。接下来对该查询集 的求值将重用缓存的结果。 请牢记这个缓存行为,因为对查询集使用不当的话,它会坑你的。...查询集不会永远缓存它们的结果。当只对查询集的部分进行求值时会检查缓存, 如果这个部分不在缓存中,那么接下来查询返回的记录都将不会被缓存。所以,这意味着使用切片或索引来限制查询集将不会填充缓存。...可以通过可变长参数指定需要select_related的字段名。也可以通过使用双下划线“__”连接字段名来实现指定的递归查询。

    2K30

    Django-model进阶(中介模型,查询优化,extra,整体插入)

    通常,查询集 的切片返回一个新的查询集 —— 它不会执行查询。...在一个新创建的查询集中,缓存为空。首次对查询集进行求值 —— 同时发生数据库查询 ——Django 将保存查询的结果到查询集的缓存中并返回明确请求的结果(例如,如果正在迭代查询集,则返回下一个结果)。...查询集不会永远缓存它们的结果。当只对查询集的部分进行求值时会检查缓存, 如果这个部分不在缓存中,那么接下来查询返回的记录都将不会被缓存。所以,这意味着使用切片或索引来限制查询集将不会填充缓存。...select_related使用SQL的JOIN语句进行优化,通过减少SQL查询的次数来进行优化、提高性能。 可以通过可变长参数指定需要select_related的字段名。...也接受无参数的调用,Django会尽可能深的递归查询所有的字段。但注意有Django递归的限制和性能的浪费。 Django >= 1.7,链式调用的select_related相当于使用可变长参数。

    1.6K70

    django这些查询技巧你会了吗?

    如果书籍表中还有外键,我们都想查询出来,可以:select_related(depth=2),以此类推。 4.示例中的方式是指定查询的外键,只查询了英雄类中所关联的图书。...❝取出指定字段,组成列表 ❞ 比如我需要一个所有英雄名称的列表:['迪迦', '武松'...]。...你可能想到的方法是查询出所有的英雄信息,然后遍历每个对象,将对象的名称放到指定的列表中,完成需求。...,此处为 hname ;第二个参数 flat 设置为 True 是为了不以元祖的形式展示,而是直接将值取出来,形如: # 不设置 flat 结果如下...它是统计了数量,但只是为查询的每行记录赋予了一个新字段 number ,并没有聚合结果,不如示例中那样清晰,哪个性别有几个,展示的明明白白。

    62130

    【Django】Django ORM 学习笔记

    字段查询 在前面的 filter、exclude 和 get 方法中,我们需要传入参数作为选择条件: title='blog2',这个就是字段查询。...如果只对 QuerySet 的部分实例(query_set[5], query_set[0:10])进行求值,首先会到 QuerySet 的缓冲中查找是否已经缓存了这些实例,如果有就使用缓存值,如果没有就查询数据库...、ManyToManyField,例如下图中的 orm_author 就与多个 orm_blog 实例关联 因此 Django ORM 中的关联查询也分两中 select_related(单关联实例)...`title` = ‘blog2') F 查询 F 查询主要用来处理表中字段之间的比较,例如查询 blog 表中 title=conent 的记录。同时 F 查询还支持计算(加减乘除)。...: 在 where 子句中插入 SQL 代码 params: 为 where 设置参数 tables: 在 FROM 子句中插入 table 名称 order_by:在 order_by 子句中插入排序字段

    2.2K20

    使用管理门户SQL接口(一)

    因此,必须首先指定要通过单击SQL接口页面顶部的 “开关switch” 选项要使用的命名空间。这将显示可用名称空间列表,可以从中进行选择。可以设置管理门户默认命名空间。...当同一个用户激活管理门户时,将显示该用户先前的设置。 重新启动InterSystems IRIS返回所有选项为默认值。没有自定义名称空间选择。 它恢复到用户定义启动名称空间。...具有插入或更新的选择模式下拉列表允许指定输入数据是否将从显示格式转换为逻辑存储格式。对于此数据转换,必须使用选择运行时的选择模式编译SQL代码。在执行时间时,必须将“选择模式”下拉列表设置为逻辑模式。...最大字段允许限制从查询返回的数量数量。它可以设置为任何正整数,包括0.一旦设置MAX,除非显式更改,否则将该值用于会话持续时间的所有查询。...请注意,下次访问管理门户时,选择的方言将成为用户自定义的默认语言。行号:一个复选框,指定是否在结果集中显示的每一行中包含行计数号。 行号是分配给结果集中每一行的连续整数。

    8.4K10

    Django ORM详解

    表中的所有字段 我们要查询所有用户为CEO的用户,我们是不是的根据UserType这张表去查,如果是跨表查询使用“双下划线” + 属性 ?...第一种方式只能找到某一个人管理的机器,不能把有的对应关系找到! select_related的作用: ?...','字段内容'))     #标记search2中的搜索条件为  ‘ 或’  查询 search2.connector = 'OR'   #把搜索条件加入到search2中 search2.children.append...条件结合列表]},这样我在查询的时候直接通过循环字典就可以把搜索条件分为不同的子条件!...key是字段名或者跨表字段名或者支持_gt等             #i为字典中的vlaue中的元素,为条件             #             q.children.append((

    1.8K100

    提高Djang查询速度的9种方法

    目录索引的优化查询集的延迟加载使用select_related进行关联查询使用prefetch_related进行预取延迟计算字段使用values()和values_list()方法选择需要的字段使用annotate...查询集的延迟加载在Django中,查询集是惰性加载的,只有在需要数据时才会执行数据库查询。这意味着我们可以链式调用多个方法来对查询进行逐步优化,而不必立即执行查询。...使用select_related进行关联查询在涉及到关联表的查询中,使用select_related()方法可以减少数据库查询的次数。...延迟计算字段有时,我们可能需要在模型中定义一些根据其他字段计算得出的字段,这些字段不会被存储在数据库中,而是在查询时动态计算。Django提供了@property装饰器来定义延迟计算字段。...使用values()和values_list()方法选择需要的字段默认情况下,查询集返回完整的模型对象。

    31520

    django ImportExportModelAdmin自定义导出数据

    ,请使用fields(自定义)选项将字段列入白名单 fields = ('id', 'name', 'price',) # 或将exclude(自定义)字段列入黑名单的选项...exclude = ('imported', ) # export_order(自定义) 选项设置导出字段的显式顺序 export_order = ('...,attribute所对应的值可以是链式调用,author__name实际得到的就是作者的名字, 但是在查询时记得使用select_related(),以保证在查询时可以将所关联的外键数据一块查出,否则无法使用链式调用...一个ModelResource创建与给定字段类型的默认控件的字段。...如果小部件应使用不同的参数初始化,请设置widgets字典。 在此示例窗口小部件中,该published字段被覆盖以使用其他日期格式。此格式将同时用于导入和导出资源。

    83740

    Web | Django 与数据库交互,你需要知道的 9 个技巧

    查询集的结果变为具名元组(QuerySet results as namedtuples) 我是一个 namedtuples 的粉丝,同时也是 Django 2.0 的 ORM 的粉丝。...将 named 设置为 True 会将 QuerySet 作为 namedtuples 列表返回: > user.objects.values_list( 'first_name', '...在大多数 Django 应用程序中,大部分时间都花在等待数据库查询上了。所以,在 SQL 查询上设置超时是一个很好的开始。...顾名思义,BRIN 索引会在表格中的一系列相邻块上创建一个小型索引。该索引非常小,只能说明某个值是否在范围内,或者是否在索引块范围内。 我们来做一个 BRIN 索引如何帮助我们的简单例子。...创建的字段通常也是查询的绝佳候选字段,所以它通常被插入索引。

    2.9K40

    Python后端基础面试题

    可以在查询中引用字段,用来比较两个字段,还可以对F()对象加减乘除 也可以通过F函数进行修改字段的操作 Q查询 与或非操作 4.django生命周期 wsgiref(web server)接收用户请求...,返回结果集 结果集为NONE时用group就报错 findall匹配所有 18.用Python匹配HTML tag的时候,<....两个栈实现一个队列 入队:元素进栈A 出队:先判断栈B是否为空,为空则将栈A中的元素 pop 出来并 push 进栈B,再栈B出栈,如不为空则栈B直接出栈 26.使用yield实现一个协程 def consumer...可以看到是否命中索引,计划能命中哪些,实际命中了哪些,执行的顺序 6.慢日志 用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中...有外键存在时, 可以很好的减少数据库请求的次数, 提高性能 select_related 通过多表 join 关联查询, 一次性获得所有数据, 只执行一次SQL查询 prefetch_related 分别查询每个表

    88130

    Django数据库查询优化与AJAX

    only only括号内放字段,查询结果是一个列表套一个个数据对象,这些数据对象点括号内的字段属性,不会再查数据库,直接就是对象获取属性;也支持点其他属性,但是其他属性会每拿一条数据就走一次数据库。...select_related与prefetch_related select_related 括号内只能放一对一、一对多的外键字段,特点:内部自动连表操作,会将括号内外键字段所关联的表与当前表自动拼接成一张表...这样做的好处:跨表查询也不需要重复走数据库,减轻数据库压力。select_related()括号内放多个外键字段,逗号隔开,会将多个外键字段关联的表与当前表拼成一张大表。...,特点:按步骤查询多张表,然后将查询结果封装到对象中,给用户的感觉好像还是连表操作,括号内支持传多个外键字段,每放一个外键字段就会多走一条SQL语句,多查一张表。...XML简单介绍 XML是一门标记语言,它的应用场景有: 1.写配置文件 2.写前端页面如odoo框架(公司内部管理软件开发框架,内部功能的实现全部依赖于python2)中的erp。

    2.4K20
    领券