django 1.8管理员操作 - 如何自动选择全部

时间:2015-08-28 17:37:47

标签: python django action

我想添加一项功能,将管理页面上的过滤数据下载为csv文件。 我想要实现的是能够下载过滤后的数据而不必选择它们,因为选择多页数据很棘手。

这是我的代码:

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方法中实现过滤器,但这是高维护,因为我想要添加过滤器,我必须更新它。 有没有更简单的方法来选择所有过滤的数据?

1 个答案:

答案 0 :(得分:0)

不确定为什么你认为选择“多页数据”很棘手。

当您选择当前页面上的所有项目时(例如,通过表格标题中的复选框),django将为您提供所有页面中的“全选”项目。执行此操作的链接会在操作选择后立即显示。