【发布时间】:2012-07-05 01:17:50
【问题描述】:
我正在遍历一个查询集并获取一个一对多的字段。现在,对于每个调用,都会触发一个查询。 Django 1.4 有 prefetch_related。如何使用 Django 1.3.1 做类似的事情?
【问题讨论】:
-
我在我的博客上写过各种技术:blog.roseman.org.uk/2010/01/11/…
标签: django django-1.3
我正在遍历一个查询集并获取一个一对多的字段。现在,对于每个调用,都会触发一个查询。 Django 1.4 有 prefetch_related。如何使用 Django 1.3.1 做类似的事情?
【问题讨论】:
标签: django django-1.3
试试https://github.com/ionelmc/django-prefetch
听起来不错:
用于 Django 的简单且通用的模型相关数据预取框架解决了当您需要对象相关数据时发生的“1+N 查询”问题。在大多数情况下,您将拥有前向关系(某事物的外键),并且可以使用 select_related 在同一查询中获取该数据。但是,在某些情况下,您无法以这种方式设计模型,并且需要来自反向关系(具有对象外键的模型)的数据。 Django 1.4 对此有 prefetch_related,然而,这个框架提供了比 Django 1.4 的 prefetch_related 查询集方法更大的灵活性,代价是为数据编写映射和查询函数。这样做的好处是你可以做 prefetch_related 不能做的事情(参见下面的 latest_book 示例)。
【讨论】: