2011-11-03 78 views
20

我想知道是否有一種方法可以在常規視圖中使用Django Admin的過濾/排序/分頁/搜索功能。Django管理員搜索/篩選功能作爲頁表

我的意思是我有一個模型,它的一些領域。我想要一個「搜索」的形式,其中字段將很像使用admin.ModelAdmin定義。用戶將能夠搜索(使用提供的字段),按值過濾,通過結果表頁面進行分頁等。所有那些沒有最小的工作量,例如。只需配置哪些字段應該在表單中使用。類似這樣的:

class SchoolAdmin(ModelAdmin): 
    list_display = ('id', 'name',) 
    list_display_links = ('name',) 
    search_fields = ('name',) 
    list_filter = ('type',) 

有沒有這樣的東西可用?或者我必須自己編寫代碼?

編輯:

特點I從這樣的插件/應用要求是:

  1. 顯示數據爲表格
  2. 按列
  3. 過濾(例如「只顯示行分選具有X = Y「)
  4. 按列搜索
  5. 可選配置類似於ModelAdmin樣式

阿拉斯代爾的django-tables2只匹配第1條件和第2條件。

+0

1.7中的當前狀態是什麼? – eyaler

回答

18

你提到的django功能在Django 1.3之類的自定義視圖中並不真正可重用。最近有關於django開發人員組關於splitting out admin functionality的一些討論使其可重用。

我遇到了兩個可能對您有用的項目,django-tables2django-filter。他們都提供稍微不同的東西,我認爲你正在尋找兩者的混合物。

Django的tables2

Django的tables2簡化轉彎組數據轉換成HTML表格的任務。它具有對分頁和排序的本機支持。它爲HTML表格確實爲HTML表單

Django的過濾器

Django的過濾器是允許用戶動態過濾 查詢集可重複使用的Django應用程序是什麼django.forms。它需要Python 2.4或更高版本。有關使用方法和 安裝說明,請參閱docs目錄。

Django過濾器可用於生成接口類似於Django admin的接口。它的API非常類似於Django的 ModelForms

+0

是的,我不想重複使用ModelAdmin,我需要一些公共視圖,它具有ModelAdmin的功能。 –

+0

django-filter是我一直在尋找的!現在我用django-pagination來使用它,但是會檢查它是否也適用於django-tables2。 –