2010-07-08 51 views
0

我只是想知道是否有任何示例可以從其他人的主題中獲取。靈活搜索頁面的良好實踐 - Django

我在Django中有一個頁面,它使用過濾器來執行搜索。

目前我做的GET參數進行簡單的檢查,並相應增加了.filter()的查詢集:

if color: 
    query.filter(color=color) 

這感覺有點像一個醜陋的方式做,我一直在想,如何讓它更具活力。

任何想法?

回答

5

試試這個:

ALLOWED = ('color', 'size', 'model') 
kwargs = dict(
    (key, value) 
    for key, value in request.GET.items() 
    if key in ALLOWED 
) 
query.filter(**kwargs) 

這將讓你做出這樣的/search/?color=red&size=1/search/?model=Nikon&color=black請求。

+0

沒辦法!這很棒!你能用任何函數使用你剛纔給我的方法嗎? – RadiantHex 2010-07-08 11:25:46

+0

對DateTime有何建議? – RadiantHex 2010-07-08 11:30:12

+0

你可以,但是你不能使用國際字符作爲關鍵字參數的名字,如果你想這樣做,你應該使用下面的語法: def test(** kwargs): param = kwargs ['параметр'] # 做一點事。 – 2010-07-13 08:19:38