在Django 1.3.1中预先获取一对多记录

时间:2012-07-04 14:08:43

标签: django django-1.3

我循环查询集并获取一对多字段。现在,对于每个调用,都有一个被触发的查询。 Django 1.4有prefetch_related。我怎么能用Django 1.3.1做类似的事情?

1 个答案:

答案 0 :(得分:0)

尝试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示例)。