2012-07-04 46 views
0

我正在循環查詢集並獲取一對多字段。現在,對於每個調用都有一個正在被觸發的查詢。 Django 1.4有prefetch_related。我該如何做與Django 1.3.1類似的東西?在Django 1.3.1中預取一對多記錄

+0

我已經在我的博客上寫過關於這方面的各種技巧:http://blog.roseman.org.uk/2010/01/11/django-patterns-part-2-efficient-reverse-lookups/ –

回答

0

嘗試https://github.com/ionelmc/django-prefetch

聽起來不錯:

簡單和通用模型相關的Django的數據預取架構解決了「1個+ N次查詢」的問題時,你需要爲你的對象的相關數據發生這種情況。在大多數情況下,您將有前向關係(外鍵爲某事),並可以使用select_related在相同的查詢中獲取該數據。但是,在某些情況下,您不能以這種方式設計模型,並需要來自反向關係的數據(對象具有外鍵的模型)。 Django 1.4爲此提供了prefetch_related,但是,該框架提供了比Django 1.4的prefetch_related queryset方法更大的靈活性,代價是寫入數據的映射和查詢函數。這有一個好處,就是你可以做prefetch_related不能做的事情(見下面的latest_book例子)。

+0

同意(對於1到N)。另外使用select_related進行N對1(FK)。 – laffuste