從 django 1.1 開始, django admin 開始多了一個 actions 的功能, 預設就提供了刪除的動作, 方便許多, 不過其實要新增自定的功能也很容易。
例如這張圖上面的”不再列表顯示”就是我另外加上的功能選單, 可以一次勾選多個要處理項目進行處理。 如果對 customize django admin 有經驗的話, 那麼自定功能對你來說就更簡單了, 基本上新增 action 的方法, 就是自定一個 ModelAdmin 的 method, 像是下面這樣, 就可以了 :D
class SongAdmin(admin.ModelAdmin):
actions = ('not_list_in_public',)
def not_list_in_public(self, request, queryset):
quertset.update(list_public=False)
not_list_in_public.short_description = '不再列表顯示'
這裡唯一得注意的一點就是, 這裡處理的對象是 queryset 喔~ 所以是複數滴, 記得考慮所有處理的東西都會是一個以上。 另外, 要存取 many to many 的東西, 像是 Site 的話, 直接像下面這樣處理就可以了。
for item in queryset:
item.add(mysite)



