dev.to | 📄 原文链接 | 2026-11-11 收录

Django 6.1 的 FETCH_PEERS 对上我手写的 select_related

来源:dev.to — 2026-11-10

📋 概述

Django 6.1 引入 fetch 模式:开了 FETCH_PEERS 之后,碰到一个对象的外键时,Django 会一次性把这个查询集里所有对象的该关系都加载进来,经典 N+1 循环变成两次查询,不用再写 select_related。作者的足球竞猜站 ExtraTime 有 621 个 select_related、103 个 prefetch_related 和 6635 个测试,他把新版本装进一份代码副本,加了统计每请求 SQL 数的中间件,跑了六组对照实验,看新机制能顶掉多少手工调优。

🔑 核心要点

💡 金句

“The classic N+1 loop becomes 2 queries without you writing select_related.”
译:经典的 N+1 循环变成两次查询,而你不用写 select_related。
← 返回 dev.to 首页