2011-10-14 49 views
0

我有一個簡單的Django視圖,顯示對象列表。我希望用戶能夠搜索/過濾/排序等對象列表。管理界面在默認情況下(所有這些都啓用)的方式正是我所期待的。Django - 模擬管理界面的搜索/過濾

Django有沒有簡單的方法來做到這一點?還是有一些第三方插件可以幫我嗎?還是我堅持用手寫所有的代碼?

我覺得這是許多其他人之前必須面對的問題,那麼最簡單(也是最不重要)的方法是什麼?

回答

0

您可以通過Javascript對對象進行排序,也可以在服務器上對對象進行排序。

javascript是限制性的,因爲在大量分頁對象的情況下,您只能排序當前頁面上的內容。

最簡單的方法是在服務器端對記錄進行排序,並允許用戶通過GET參數選擇排序;像

http://mydomain.com/path/to/view/?sort=asc 

然後在您的視圖(這是非常粗糙的,不應該是你如何實現它):

def myview(request): 
    ... 
    # Check if the user has provided a 'sort' parameter, and check what it is 
    if request.GET.get("sort", None) is "asc": 
     results = SomeModel.objects.get(...).order_by("-name") 
    ... 

您可以將相同的邏輯來過濾,但(在我看來) ,如果您要更改實際的查詢集(返回的對象),則應通過URL實現篩選,而不是通過GET參數(它隻影響返回結果的順序)執行篩選