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

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

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

6110

重点内容回顾-DRF

ForeignKey('self')代表是自关联 3.一些常用命令 a. 创建Django工程: django-admin startproject 工程名称 b....,我们还可以补充额外验证: a.先写一个函数(about_django)封装补充验证功能,然后在字段中添加 validators参数,如下: btitle = serializers.CharField...功能: 1.视图中request对象不再是Django原始HttpRequest类对象,而是DRF框架封装Request类对象。...request.query_params保存解析之后查询字符串数据,并且已经解析成了字典或类字典,相当Django原始request对象中request.GET 2.响应时可以统一返回Response...数据库查询 属性: queryset(指定视图所使用查询集) 方法: get_queryset返回视图所使用查询集 get_object从视图所使用查询集中查询指定对象,默认根据pk进行查询

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

Django 模型查询2.3

简介 查询集表示从数据库中获取对象集合 查询集可以含有零个、一个或多个过滤器 过滤器基于所给参数限制查询结果 从Sql角度,查询集和select语句等价,过滤器像where和limit子句 接下来主要讨论如下知识点...():返回第一个对象 last():返回最后一个对象 exists():判断查询集中是否有数据,如果有则返回True 限制查询查询集返回列表,可以使用下标的方式进行限制,等同于sql中limit和...,[0:1].get()引发DoesNotExist异常 查询缓存 每个查询集都包含一个缓存来最小化对数据库访问 在新建查询集中,缓存为空,首次对查询集求值时,会发生数据库查询django会将查询结果存在查询缓存中...()、exclude()、get()参数 语法:属性名称__比较运算符=值 表示两个下划线,左侧是属性名称,右侧是比较类型 对于外键,使用“属性名_id”表示外键原始值 转义:like语句中使用了%...')) django支持对F()对象使用算数运算 list.filter(bread__gte=F('bcommet') * 2) F()对象中还可以写作“模型类__列名”进行关联查询 list.filter

2.3K20

Django模型

4.查询查询集表示从数据库中获取对象集合,在管理器上调用某些过滤器方法会返回查询集,查询集可以含有零个、一个或多个过滤器。...判断某一个查询集中是否有数据: exists():判断查询集中是否有数据,如果有则返回True,没有则返回False。...在新建查询集中,缓存为空,首次对查询集求值时,会发生数据库查询django会将查询结果存在查询缓存中,并返回请求结果,接下来对查询集求值将重用缓存中结果。...通过对象执行关联查询 在定义模型类时,可以指定三种关联关系,最常用是一对多关系,本例中"图书-英雄"就为一对多关系。...自定义管理器类主要用于两种情况: 1.修改原始查询集,重写all()方法 2.向管理器类中添加额外方法,向数据库中插入数据。 1.修改原始查询集,重写all()方法。

6.1K21

django 1.8 官方文档翻译: 2-5-2 进行原始sql查询

网站:http://python.usyiyi.cn/django/index.html 进行原始sql查询模型查询API不够用情况下,你可以使用原始sql语句。...django提供两种方法使用原始sql进行查询:一种是使用Manager.raw()方法,进行原始查询并返回模型实例;另一种是完全避开模型层,直接执行自定义sql语句。...进行原始查询 raw()方法用于原始sql查询,并返回模型实例: Manager.raw(raw_query, params=None, translations=None) 这个方法执行原始sql...通常,Django通过将模型名称模型“应用标签”(你在manage.py startapp中使用名称)进行关联,用一条下划线连接他们,来组合表名称。...Django 使用主键来识别模型实例,所以它在每次原始查询中都必须包含。如果你忘记包含主键的话,会抛出一个InvalidQuery异常。 增加注解 你也可以在查询中包含模型中没有定义字段。

90120

Django相关知识点回顾

(request): req_data = request.body # 获取请求体中原始数据bytes # 将bytes转换为str json_str = req_data.decode...Flask中request请求对象属性 Django中request请求对象属性 说明 args GET 查询字符串参数 form POST 请求体中表单数据 data body 请求体中原始...删除 查询对象->对象.delete() 或者: 模型类.objects.filter(...).delete() 查询 模型类.objects.查询函数 查询相关函数: 函数名称 参数 作用 返回值...all 无 查询模型类对应表格中所有数据 QuerySet(查询集) get 查询条件 查询满足条件一条且只能有一条数据 模型类对象,查不到会报错DoesNotExist filter 查询条件 返回满足条件所有数据...例:查询id大于3图书数量 BookInfo.objects.filter(id__gt=3).count() exists:判断查询集中是否有数据 两大特性 惰性查询: 只有在使用查询集中数据时才会进行数据库真正查询操作

10K51

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

过滤条件表达语法如下: 属性名称__比较运算符=值 # 属性名称和比较运算符间使用两个下划线,所以属性名不能包括多个下划线 查询编号为1图书 查询书名包含'湖'图书 查询书名以'部'结尾图书...查询书籍为1所有人物信息 查询人物为1书籍信息 由一到多访问语法: 一对应模型类对象.多对应模型类名小写_set 例: >>> book = BookInfo.objects.get(id=...查询集,也称查询结果集、QuerySet,表示从数据库中获取对象集合。 当调用如下过滤器方法时,Django会返回查询集(而不是简单列表): all():返回所有数据。...判断某一个查询集中是否有数据: exists():判断查询集中是否有数据,如果有则返回True,没有则返回False。...使用同一个查询集,第一次使用时会发生数据库查询,然后Django会把结果缓存下来,再次使用这个查询集时会使用缓存数据,减少了数据库查询次数。

1.9K40

django框架菜鸟教程_django框架菜鸟教程

’, views.say, name=‘say’), ] reverse反解析 使用reverse函数,可以根据路由名称,返回具体路径,: from django.urls import reverse...非表单类型 通过request.body属性获取原始请求体数据,自己按照请求体格式(JSON、XML等)进行解析。request.body返回bytes类型。...模型类.DoesNotExist 异常 all 多个结果 count 查询结果数量 过滤查询 filter 过滤多个结果 exclude 排除 get 过滤单一结果 过滤条件表达语法 属性名称...():判断查询集中是否有数据,有返回Ture,无返回False 2、特性 惰性执行:创建查询时候不会调用数据库,调用数据时候访问,迭代、序列化、if合用 缓存 3、限制查询集 对查询集进行下标或切片操作...,切片后返回新查询集,不会立即执行 管理器Manageer 1、自定义管理器 修改原始查询集,重写all()方法 booktest/models.py文件中 #图书管理器 class BookInfoManager

3K40

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

步骤 查找查询结果集中满足条件全部 QuerySet 查询集合对象 调用查询集合对象 delete () 方法实现删除 示例: # 删除全部作者中,年龄大于65全部信息 auths = Author.objects.filter...,都要使用聚合查询 不带分组聚合 不带分组聚合查询是指导将全部数据进行集中统计查询 聚合函数【需要导入】: 导入方法: from django.db.models import * 聚合函数: Sum...list_editable 设置为模型字段名称列表,这将允许在更改列表页面上进行编辑。...class Meta: 1. db_table = '数据表名' - 该模型所用数据表名称。...获取book对应作者中年龄大于80岁作者信息 通过 Author 查询对应所有的 Book【反向】 Django 会生成一个反向属性 book_set 用于表示对对应 book 查询对象相关操作

4K40

django模型类管理器——数据库操作封装详解

当没有为模型类定义管理器时,Django会为模型类生成一个名为objects管理器,自定义管理器后,Django不再生成默认管理器objects。...管理器是Django模型进行数据库操作接口,Django应用每个模型都拥有至少一个管理器。Django支持自定义管理器类,继承自models.Manager。...自定义管理器类主要用于两种情况: 1.修改原始查询集,重写all()方法 2.向管理器类中添加额外方法,向数据库中插入数据。 1.修改原始查询集,重写all()方法。...答:objects是Django帮我自动生成管理器对象,通过这个管理器可以实现对数据查询。...models.Manager): """图书模型管理器类""" # 改变查询结果集 def all(self): # 1.调用父类all,获取所有数据 books = super().

1.3K10

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

然而,你有时候会想要获取从一组对象导出值或者是聚合一组对象。这份指南描述了通过Django查询来生成和返回聚合值方法。 整篇指南我们都将引用以下模型。这些模型用来记录多个网上书店库存。...=Min('books__price'), max_price=Max('books__price')) 这段代码告诉 Django 获取书店模型,并连接(通过多对多关系)图书模型,然后对每本书价格进行聚合...和 跨关系查找方法类似,作用在你所查询模型关联模型或者字段上聚合和注解可以遍历”反转”关系。...关联模型小写名称和双下划线也用在这里。...与默认排序或order_by()交互 在查询集中order_by() 部分(或是在模型中默认定义排序项) 会在选择输出数据时被用到,即使这些字段没有在values() 调用中被指定。

1.6K30

Django中数据库相关操作

过滤条件表达语法如下: 属性名称__比较运算符=值 # 属性名称和比较运算符间使用两个下划线,所以属性名不能包括多个下划线 1)相等 exact:表示判等。 例:查询编号为1图书。...查询集,也称查询结果集、QuerySet,表示从数据库中获取对象集合。 当调用如下过滤器方法时,Django会返回查询集(而不是简单列表): all():返回所有数据。...判断某一个查询集中是否有数据: exists():判断查询集中是否有数据,如果有则返回True,没有则返回False。...,第一次使用时会发生数据库查询,然后Django会把结果缓存下来,再次使用这个查询集时会使用缓存数据,减少了数据库查询次数。...对查询集进行切片后返回一个新查询集,不会立即执行查询。 示例:获取第1、2项,运行查看。 qs = BookInfo.objects.all()[0:2] ?

2.2K50

Django之Model操作数据库详解

Django ORM框架功能: 建立模型类和表之间对应关系,允许我们通过面向对象方式来操作数据库。 根据设计模型类生成数据库中表格。 通过方便配置就可以进行数据库切换。...根据日期获取查询集 datetimes() 根据时间获取查询集 none() 创建空查询集 union() 并集 intersection...raw() 接收一个原始SQL查询 1.filter():     filter(**kwargs)     返回满足查询参数对象集合。    ...关键字参数指定Annotation将使用关键字作为Annotation 别名。 匿名参数别名将基于聚合函数名称模型字段生成。 只有引用单个字段聚合表达式才可以使用匿名参数。...每个字典表示一个对象,键对应于模型对象属性名称

7K10

DRF框架学习(二)

1.Restful API接口实现 1.1需求实现思路 1、获取指定图书信息: 1)根据pk获取指定图书对象(pk由查询字符串形式传给后端) 2)将图书json数据返回,状态码:200 2、修改指定图书信息...ModelViewSet): queryset = BookInfo.objects.all() serializer_class = BookInfoSerializer queryset 指明该视图集在查询数据时使用查询集...: btitle = serializers.CharField(label='名称', max_length=20, validators=[about_django]) 2)在序列化器类里面定义一个方法...对字段进行验证, def validate_btitle(self,value): if 'django' not in value.lower(): raise...4.7模型类序列化ModelSerializer 如果我们想要使用序列化器对应Django模型类,DRF为我们提供了ModelSerializer模型类序列化器来帮助我们快速创建一个Serializer

4.1K30

django_2

要求 修改数据库 Django shell 数据级联(一对多) 元信息 定义字段 模型过滤 创建对象4种方式 查询集 过滤器 获取单个对象 字段查询 时间 聚合函数 跨关系查询 F对象 Q对象...(查询Django默认通过模型objects对象实现模型数据查询。.../缓存集 查询缓存:每个查询集都包含一个缓存,来最小化对数据库访问 在新建查询集中,缓存首次为空,第一次对查询集求值,会发生数据缓存,django会将查询出来数据做 一个缓存,并返回查询结果...- 都不会真正查询数据库 - 懒查询 - 只有我们在迭代结果集,或者获取单个对象属性时候,它才会去查询数据 - 为了优化我们结果和查询 获取单个对象:...有save属性,获取一条数据 filter---> 得到查询集合,queryset没有save属性,获取所有数据

3.6K30

Django ORM 多表操作

ORM 多表操作 表模型 图书表 出版社表 作者表 作者详情表 表关系 一对一:一对一推荐建在查询频率高一方 一对多:外键字段建在多一方 多对多:外键字段建在查询频率多一方,在Django第三张表不需要创建...获取作者对象 id b. 获取书籍对象 c....book_obj.authors.set([3, 2]) book_obj.authors.set([author_obj1, author_obj2]) ORM 删除和清空数据 remove():从关联对象集中移除执行模型对象...'''子查询思路''' 1、先查出一个对象 2、基于对象正反查 '''基于对象跨表查询:正向''' 1.查询三国演义书籍对应出版社名称 book_obj = models.Book.objects.filter...,那么现在演示跨表操作,就类似sql连表操作(inner join···),是两种不同查询方法 '''基于双下划线跨表操作:连表操作''' '''正向''' 1.查询三国演义书籍对应出版社名称

1.7K20
领券