Greetings,獲取緩存結果後的Django/Python排序
一些快速的東西(django 1.2.3,python 2.6,memcached)。
我有一個功能,我首先做一個有點貴的查詢,當我做這個查詢時,我做了一個oder_by。然後我更新一些可能會改變結果順序的值。然後我把所有的值放在緩存中。
然後在另一個函數中,我得到了緩存,我想對結果進行求值,以便它們再次按順序排列。
所以這將是類似的東西。
function 1():
mylist = myevent.people.order_by('-score')
....do up date....
cache.set(cache_key,mylist)
function(2):
my_cache_list = cache.get(cache_key)
newlist = sorted(my_cache_list,key=operator.attrgetter('score'), reverse=True)
基於其他職位我認爲這應該工作,但我得到一個類型錯誤說my_cache_list是unsubsriptable。
任何人有任何想法?我可能做一些愚蠢的事情......
謝謝。
注意:更新使operator.itemgetter更改operator.attrgetter刪除錯誤!上面的代碼確實有效。問題在於使用operator.itemgetter。
當錯誤出現時,my_cache_list等於什麼?可能是'None',因爲沒有緩存的值?最好將'list'存儲在緩存中,而不是queryset。 – DrTyrsa 2011-05-23 07:43:01
您確定要這麼做嗎?當您將新條件應用於已經緩存的查詢集時,它將執行新的數據庫查詢,因爲它需要重新評估查詢集。最好將查詢集的結果保存爲列表,然後通過Python對它們進行排序,而不是使用Django的查詢API。 – 2011-05-23 08:37:05
@DTTyrsa爲什麼緩存列表比queryset更好? – 2011-05-23 16:57:20