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

何在Django中使用单行查询获取关联模型数据

Django ,你可以使用单行查询获取关联模型数据。...这通常涉及使用查询 select_related 或 prefetch_related 方法,这两个方法允许你在一次数据库查询获取关联模型数据,而不是分开多个查询。...下面是一些示例:1、问题背景在 Django ,我们经常需要查询关联模型数据。传统方法是使用外键关系来获取关联模型数据,这需要进行两次数据库查询。...2.1 使用 select_related()select_related() 可以将关联模型数据直接加载到主模型,这样就可以在一次数据库查询获取到所有需要数据。...你可以根据自己需求选择合适方法。使用这些方法之一,我们可以在单行代码获取关联模型数据。这些方法可以帮助你优化数据库查询并减少不必要查询次数,提高 Django 应用程序性能。

7410

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

文章目录 一、基础条件查询 1.基本查询 2.过滤查询 3.F和Q对象 4.聚合函数和排序函数 5.关联查询 6.查询QuerySet ---- 一、基础条件查询 1.基本查询 get查询单一结果,如果不存在会抛出模型类...答:使用F对象,被定义在django.db.models。 语法如下: F(属性名) 例:查询阅读量大于等于评论量图书。...django.db.models。...PeopleInfo: 王语嫣>, <PeopleInfo 6.查询QuerySet 1 概念 DjangoORM存在查询概念。...查询集,也称查询结果集、QuerySet,表示从数据库获取对象集合。 当调用如下过滤器方法时,Django会返回查询集(而不是简单列表): all():返回所有数据。

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

Django ORM filter() 运用详解

,page_num * page)) 代码场景: 这是一个获取信息API.所以需要去数据库里取对应信息,但是你不知道获取信息是根据哪几个字段而来,需要靠用户传入,在这里eval()函数就提供给某些人员很好入侵性....所以用了另外一种方式去改良代码. filter(**kwargs): 它包含了与所给筛选条件相匹配对象 条件查询 条件可以是:参数,字典,Q def filter(self, *args, **...补充知识:django orm查询filter与get区别 输入参数: get参数只能是model定义哪些字段,只支持严格匹配 filter参数可以是字段也可以是扩展where查询关键字,...in,like 返回值: get返回值是一个定义model对象 filter返回值是一个新QuerySet对象,然后可以对QuerySet在进行查询返回新QuerySet对象,支持链式操作,QuerySet...以上这篇Django ORM filter() 运用详解就是小编分享给大家全部内容了,希望能给大家一个参考。

1.6K40

Django orm(1)

一、orm查询 1.1配置测试脚本 为了方便我们测试SQL语句,我们需要配置一下tests.py文件,在这里测试我们SQL语句,单独测试Djangopy文件都可以这样配置。...filter获取是一个queryset对象,类似于一个列表,如果对象为空时,就如同一个空列表;get获取是对象本身,如果对象不存在会报错,所以不推荐使用。...(pk=3) publish_obj.delete() 1.2.4查询数据 querysetfilter()和对象get()都是对数据查询方法,括号内条件相当于SQL语句中where后面的部分,...[, ]> __in条件查询 查询条件是__in等于几个条件,这几个条件是或关系...如果传入对象或者数字是表根本不存在,不会报错,只是不执行删除语句而已。

40710

浅谈在django中使用filter()(即对QuerySet操作)时踩

可是无法将数据同步到数据库。 (1)all()返回QuerySet对象,程序并没有真的在数据库执行SQL语句查询数据,但支持迭代,使用for循环可以获取数据。...例1不要尝试通过message.save()方式去同步数据到数据库,因为QuerySet不存在save()方法。 正确写法如下: 要想同步到数据库,需使用对象进行数据同步操作。...filter和get个人体会 开发环境:Ubuntu16.04+Django 1.11.9+Python2.7 filter返回QuerySet: filter返回QuerySet,可以切片以及遍历...,get则不行.因为get只能获取唯一存在数据,不存在或者存在多条都会报错....但是可以使用[0]可以获取符合过滤条件第一个值, 解决办法,使用save(): book_info = Book.objects.filter(id=book_id, request_type=2).

4.1K10

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

查询数据 数据库查询需要使用管理器对象进行 通过 MyModel.objects 管理器方法调用查询接口 方法 说明 all() 查询全部记录,返回QuerySet查询对象 get() 查询符合条件单一记录...删除单个MyModel对象或删除一个查询结果集(QuerySet)全部对象都是调用 delete()方法 删除单个对象 步骤 查找查询结果对应一个数据对象 调用这个数据对象 delete ()...步骤 查找查询结果集中满足条件全部 QuerySet 查询集合对象 调用查询集合对象 delete () 方法实现删除 示例: # 删除全部作者,年龄大于65全部信息 auths = Author.objects.filter...return HttpResponse('请查看服务器端控制台获取结果') F对象 一个F对象代表数据库某条记录字段信息 作用: 通常是对数据库字段值在不获取情况下进行操作 用于类属性...获取book对应作者中年龄大于80岁作者信息 通过 Author 查询对应所有的 Book【反向】 Django 会生成一个反向属性 book_set 用于表示对对应 book 查询对象相关操作

4K40

Django学习笔记之Queryset详解

另外,查询QuerySet又是缓存,当再次使用同一个QuerySet时,并不会再查询数据库,而是直接从缓存获取(不过,有一些特殊情况)。...实现 在SQL,很多关键词在删、改、查时都是可以用order by、 like、in、join、union、and、or、not等等,我们以查询为例,说一下django如何映射SQL这些关键字...只返回主表(即Author表)所有字段值,即使在查询时关联了其它表,关联表字段也不会返回,只有当我们通过Author instance用关联表时,Django才会再次查询数据库获取值。...看下面两段代码,这两段代码在1.1提到过。在代码1,在遍历a前,先执行a对应SQL,拿到数据后,然后再遍历a,而遍历过程,每次都还要查询数据库获取关联表。...如果只想知道一个QuerySet有多大,而不想获取QuerySet每个元素,那就用count();如果已经从数据库获取到了QuerySet,那就用len() 2.4.12  contains/startswith

2.7K30

Django项目知识点(四)

QuerySet实例 就是从数据库根据自己要求拿数据 连数据都那不出来,写啥视图 所以在编写queryset必须用django shell 调试 在modelDjango通过给Model增加一个objects...exclude() 排除满足条件对象 annotate() 使用聚合函数 order_by() 对查询集进行排序 reverse() 反向排序 distinct() 对查询集去重...dates() 根据日期获取查询集 datetimes() 根据时间获取查询集 none() 创建空查询集 all() 获取所有的对象 union() 并集 intersection...SQL是获取全部记录,相当于QuerySet如下查询: qs = new.objects.all() filter() filter是筛选意思,通过filter筛选得到符合条件数据集。...aggregate和annotate方法属于高级查询方法,主要用于组合查询,是Django高手们必需要熟练掌握

1.6K30

Django学习之旅(六)

Django ,一个模型类对应一个数据库表。因此,一个模型类实例就表示表一条数据。为了输出数据一目了然,我们需要对上面的 model 进行优化。 ?...2)查询数据 同样在 python 终端下,执行下面的命令。 ? 3)使用 QuerySet API 查询数据 从数据库查询出来结果一般是一个集合,这个集合叫做 QuerySet。...我们可以利用 QuerySet 支持迭代特性来进行操作。 ? QuerySet 还有更加复杂用法, 利用过滤条件来筛选出数据。 ?...4)使用 QuerySet 创建数据 我们之前创建对象都是通过命令行。但是在生产环境,显然不能这么操作。那么我们要如何在 py 文件创建对象呢?...6)使用 QuerySet 删除数据 删除用法跟创建用法是大同小异,在获取结果后面添加 delete() 方法即可。 ? Django 学习之旅不知不觉到了终点了。终点又是另一个新起点。

1.4K30

Django之Model操作数据库详解

filter返回是一个QuerySet对象,filter里可以设定多个过滤条件 4、查 查询数据使用QuerySet API。...Django不支持负索引。 6.distinct():     distinct(*fields)     去除查询结果重复行。      默认情况下,QuerySet不会去除重复行。...bool__title="python").values("name") print(res9) 条件查询即与对象查询对应,是指filter,values等方法通过__来明确查询条件 4.3F查询和...Q查询 F查询专门取对象某列值操作,F作用:用来批量修改数据 #导入F from django.db.models import F #把table1表num列每一个值在基础上加10...table1.objects.all().update(num=F("num")+10) Q构建搜索条件, Q作用:Q是用来做条件查询 #导入Q from django.db.models import

7K10

django 1.8 官方文档翻译: 2-2-1 执行查询

获取对象 通过模型Manager构造一个QuertSet,来从你数据库获取对象。 QuerySet表示你数据库取出来一个对象集合。...你可以一直添加过滤器,在这个过程Django 不会执行任何数据库查询,除非 QuerySet 被执行....字段筛选条件 字段筛选条件就是 SQL 语句中 WHERE 从句。就是 Django QuerySet filter(), exclude() 和 get() 方法关键字参数。...与 entry 相关联,Django 会认为它没有 name 属性,而不会因为不存在 author 抛出异常。...针对这两种情况,Django 用一种很方便方式来使用 filter() 和 exclude()。对于包含在同一个 filter() 筛选条件查询集要同时满足所有筛选条件

4.3K20

DjangoDjango ORM 学习笔记

从数据库查询出来结果一般是一个集合,这个集合称为 QuerySet。...基本查询 下面是 QuerySet (也是 Manager)几个基本查询方法 all() - 获得数据库中所有实例一个 QuerySet filter(**kwargs) - 返回满足查询条件...QuerySet exclude(**kwargs) - 获得不满足查询条件 QuerySet get(**kwargs) — 从数据库获得一个匹配结果(一个实例),如果没有匹配结果或者匹配结果大于一个都会报错...`name` = 'zjk' 限制 QuerySet 有时候我们并不需要获取查询全部数据,而只需要一个子集,一个常见场景就是进行分页查询。...当首次对 QuerySet 所有实例进行求值时,会将查询结果保存到 QuerySet 缓冲。当再访问该 QuerySet 时,会直接从缓冲取数据。

2.2K20

详解python django面向关系数据库ORM对象映射系统(1)

django是一套开发成本低、迭代周期快python web框架,而mysql等关系数据库则是网站必备组件,django通过设计一套python对象与数据库表映射系统ORM,使得开发者不用写一行...,查询就不会被django执行。...这意味着我们尽可以写下大量QuerySet方法,其返回对象可以被多个条件分支反复使用。关于这一部分实现也将在下一篇说明。 本文主要讲述ORM总体框架,以下开始说明其实现方法。...那么,当未执行过查询时,QuerySet对象还不存在,这些表方法如何提供给用户呢?...如果查看django源代码会发现上图中红色类BaseManagerFromQuerySet并不存在,它是由type元类生成,也就是由它将QuerySet类里方法注入到Manager类,从而让objects

1.2K20
领券