2010-02-23 34 views
12

Django的修改列表表是真的很酷的 - 搜索,過濾,多選動作等重用的Django變更列表外管理站點

我建立一個定製的後端一個應用程序,我一直意識到:這正是我需要什麼,我應該重新使用它。

有沒有人有使用Django的管理應用以外的更改列表的經驗?

我在到達什麼目前是這樣的:

from profile.admin import ProfileAdmin 
from django.contrib.admin.sites import AdminSite 
from profile.models import Profile 
profile_admin = ProfileAdmin(Profile, AdminSite()) 
return profile_admin.changelist_view(request) 

我想知道如果任何人有經驗,用這個也可以提出一種替代。

+0

您是否設法重用更改列表或以某種方式對其進行修改? – guival

+0

試圖做同樣的事情,很想聽聽最後的辦法 – dave4jr

回答

9

ChangeList作爲一個類是非常酷和功能齊全。但是,在AdminSite整體框架的上下文之外的難以使用

ChangeList類需要12個必需的__init__()參數。當你意識到這些數據全部來自Admin changelist_view()時,單單這個數字應該可以讓你遠離和加倍。雖然這些參數自Django 1.1以來一直保持不變,但它們的確從1.0變爲了Django內部對象,我不會依賴它的穩定接口。

使用變更列表的最佳方式 - 或專門拿到變更列表益(這是你在後) - 是使用changelist_view()方法。使用這當然需要使用/子類AdminSite。 這是值得做的,或者至少嘗試。看起來你已經是。

該方法採用request參數,並在指向它的URL路由中使用/(?P<app_label>%s)/(?P<model_name>%s)/

挖掘到的代碼:

  • ChangeList生命django.contrib.admin.views.main
  • changelist_view()django.contrib.admin.options.ModelAdmin

更新的方法:在Django中1.4,既ChangeListchangelist_view()通過加入一種改變和兩個新的參數分別。