prefetch_related()

prefetch_related(*lookups)

返回一个QuerySet,该QuerySet将在单个批处理中为每个指定的查找自动检索相关对象。

这与select_related的目的类似,因为这两种方法都是为了阻止由于访问相关对象而导致的大量数据库查询,但策略完全不同。

select_related的工作原理是创建一个SQL连接并在select语句中包含相关对象的字段。因此,select_related将获取同一数据库查询中的相关对象。但是,为了避免由于跨“多”关系连接而导致的结果集更大,select_related仅限于单值关系、外键关系和一对一关系。

prefetch_related对每个关系进行单独的查找,并在Python中执行“joining”。这使得它可以预取多对多和多对一对象,除了select_related支持的外键和一对一关系之外,还可以预取多对多和多对一对象。它还支持GenericRelationGenericForeignKey的预取,但是,它必须限制为一组相同的结果。例如,只有当查询限制为一个ContentType时,才支持预取GenericForeignKey引用的对象。

例如,假设您有以下模型:

Django —— 模型层 —— QuerySet —— QuerySet方法参考相关推荐

  1. Django基础五之Django模型层(二)多表操作

    Django基础五之Django模型层(二)多表操作 一 创建模型 表和表之间的关系 一对一.多对一.多对多 # 作者表 比较常用的信息放在这个表中 class Author(models.Model ...

  2. Django 模型层(models) 复杂查询详解

    Django 模型层(models) 复杂查询详解 一般Django orm 和原生sql混合使用 1.测试文件 只单独测试django中的某一个py文件 不一定是tests.py 1.配置 在任意一 ...

  3. Django–模型层orm查询

    文章目录 Django–模型层orm查询 一.单表查询(增.删.改.查) 基本查询 下划线查询 二.外键字段(增.删.改.查) 一对多 多对多 三.多表查询 多表查询的方式 正反向的概念 基于对象的跨 ...

  4. 3.1.8 Django模型层详细应用

    在这里肯定有小伙伴会说,前面不是已经引用了模型层了吗?并且在模型层中完成了数据库的操作了呀,为什么还要讲模型层? 首先呢,前面属于我们最传统的处理方式,那种方式过于麻烦,无法很好处理数据.模型层真正应 ...

  5. Web开发-Django模型层

    Django模型层 简述 Django框架处理业务的逻辑一般如下(省略图,源于网络,侵删) 可以看到,Django自带了一套ORM机制,这也是Django框架的核心-"全面",将一 ...

  6. python代码函数字符查询宝典书籍_Django基础五之django模型层(一)单表操作

    二 单表操作 一.创建表 创建模型 创建名为book的app,在book下的models.py中创建模型: from django.db importmodels#Create your models ...

  7. Django 模型层

    ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的 ...

  8. 5.Django|模型层--多表关系

    多表操作 文件为 ---->  orm2 数据库表关系之关联字段与外键约束 一对多Bookid title price publish email addr1 php 100 人民出版社 111 ...

  9. Django模型层Meta内部类详解

    Django 模型类的Meta是一个内部类,它用于定义一些Django模型类的行为特性.以下对此作一总结: abstract      这个属性是定义当前的模型类是不是一个抽象类.所谓抽象类是不会对应 ...

最新文章

  1. 2021年大数据Kafka(十一):❤️Kafka的消费者负载均衡机制和数据积压问题❤️
  2. (转载)新年——顺民的牢骚
  3. java jni调用dll文件_Java通过jni调用动态链接库
  4. php重构ifelse,php - 重构条件语句PHP - SO中文参考 - www.soinside.com
  5. 2022年全球及中国晶圆探针卡市场需求策略与发展格局规模预测报告
  6. 纯CSS图片缩放后显示详细信息
  7. intellij运行spark的maven方式运行WordCount
  8. Git之怎么通过命令修改前面几次提交的记录
  9. windows签名证书流程
  10. MyBatis入门使用及其四大核心对象
  11. pgAdmin4数据库备份还原
  12. fgo服务器维护抽卡,FGO国服最佳抽卡时间推荐,玄学或许能让你脱非入欧!
  13. 计算机图形学(九)-纹理的应用,环境贴图、凹凸贴图、法线贴图、位移贴图
  14. 币图_教你什么是IM 去中心化概念模型与架构设计
  15. Qtum量子链研究院:Qtum Plasma MVP 技术详解
  16. 七代处理器装win7_雷神ST(Intel第七代CPU)怎么一键重装win7系统
  17. C语言(二):数据类型
  18. 双臂魔方机器人的学习
  19. 思科交换机:基本命令(上)
  20. MQL5更换默认储存地址

热门文章

  1. 谈谈一些有趣的CSS题目(十七)-- 不可思议的颜色混合模式 mix-blend-mode
  2. 打造 通用的 支持多数据库 操作的 DBHelper
  3. 如何使用matplotlib绘制一个函数的图像
  4. 能够提高开发效率的Eclipse实用操作
  5. Windows SharePoint Services 3.0编码开发工具和技巧(Part 1 of 2)
  6. 免费的SEO工具软件大全
  7. UIWebView相关应用
  8. 2009年全国计算机软件考试推荐用书目录
  9. ajax数据字符串拼接,ajax请求到后台数据,前台不用拼接字符串,一样显示到页面...
  10. Java黑皮书课后题第8章:8.29(相同的数组)如果两个二维数组m1和m2具有相同的内容,则它们是相同的。编写一个方法,如果m1和m2相同的话,返回true