2011-12-13 67 views
3

我想對我的店鋪模型按其開放時間排序。商店模型包含is_open函數,該函數控制商店的開放時間範圍,並在打開或未打開時生成布爾值。問題是我不想手動排序我的查詢集,因爲效率問題。我想如果我編寫自定義註釋函數,那麼我可以更有效地過濾查詢。自定義日期綜合功能

所以我google了一下,發現我可以擴展Django的聚合類。從我的理解,我必須使用預先定義的SQL函數,如MAX,AVG等。事情是我想檢查今天的日期是在一個給定的時間間隔列表。所以任何人都可以幫助我使用哪個SQL名稱?

編輯

我想在這裏把代碼,但它的確是一個意大利麪條之一。一頁長碼只產生時間間隔並檢查合適的一個。

我想避免:

alg= lambda r: (not (s.is_open() and s.reachable)) 
sorted(stores,key=alg) 

,並替換爲:

Store.objects.annotate(is_open = CheckOpen(datetime.today())).order_by('is_open') 

但我完全怎樣寫CheckOpen輸了...

+0

您能否給我們一些來自'Store'模型的代碼,一個簡短的數據例子和ex結果。 – Stan

回答