2015-08-28 96 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