python - 为一个类实例预取多对多关系
问题描述
我想限制详细视图的查询。我想在较少的查询中访问一个类实例的多个多对多字段。似乎prefetch_related无法使用,get
并且服务器会针对每个多对多字段访问他的数据库。
JobInstance = Job.objects.get(pk=id).prefetch_related('cities').prefetch_related('experience_level')
解决方案
您可以通过重新排序来让它工作,例如:
job_instance = Job.objects.prefetch_related('cities', 'experience_level').get(pk=id)
A.prefetch_related(..)
在 a 上定义QuerySet
,当您执行 a 时,您将.get(..)
获取对象,并且您不再使用查询集。
但对于单个对象,.prefetch_related(..)
不会提高效率。毕竟,这里会做两个额外的查询来获取相关对象,和不预取一样多,然后再评估..prefetch_related(..)
job_instance
.prefetch_related(..)
因此,当您想要批量获取多个对象的相关对象时很有用。
推荐阅读
- r - 根据条件用数字替换所有字符串
- java - 不断向ExecutorService提交Runnable任务,直到工作完成,得到java.util.concurrent.RejectedExecutionException
- prolog - Prolog 程序未正确合并排序列表
- outlook - 逻辑应用电子邮件触发器 - 获取原始别名
- clojure - Eastwood linter 没有禁用弃用警告
- windows - 如何修复 Cygwin 中的 vi 编辑器?
- github - github:如何在来自不同存储库的提交中引用问题?
- php - 用户无法访问编辑页面
- c++ - 当 Microsoft 文档仅包含 C# 示例时如何查找 c++ 包含文件名
- javascript - 如何在 .ts 文件中使用外部 javasrript 文件而不进行转换?