2015-08-28 145 views
1

我想添加一個功能,將管理頁面上的過濾數據作爲csv文件下載。 我想要實現的目的是能夠下載過濾的數據,而不必選擇它們,因爲選擇多頁數據是非常棘手的。django 1.8管理員操作 - 如何自動選擇所有

這裏是我的代碼:

def download_csv(modeladmin, request, queryset): 
    for obj in queryset: 
     # write to the response... 

@admin.register(MyTable) 
class MyTableAdmin(admin.ModelAdmin): 
    actions = (download_csv,) 
    download_csv.short_description = 'Download as csv' 

    def changelist_view(self, request, extra_context=None): 
     post = request.POST.copy() 
     if admin.helpers.ACTION_CHECKBOX_NAME not in post: 
      post.update({admin.helpers.ACTION_CHECKBOX_NAME:None}) 
      request._set_post(post) 
     return super(VariantAdmin, self).changelist_view(request, extra_context) 

的changelist_view代碼將抑制任何選定的驗證。 由於queryset爲空,上面的代碼將不下載數據。 我知道我可以使用POST參數在我的download_csv方法中實現過濾器,但是這是高維護,因爲任何時候我想添加一個過濾器,我必須更新它。 有沒有更簡單的方法來選擇所有過濾的數據?

回答

0

不確定爲什麼您認爲選擇「多頁數據」很棘手。

當您選擇當前頁面上的所有項目(例如,通過放置在表格標題中的複選框)時,django會爲您提供跨所有頁面的「全選」項目。執行操作後顯示鏈接。

+0

我知道,但我正在爲非技術人員的接口誰不能弄清楚:) – max