我想添加一项功能,将管理页面上的过滤数据下载为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方法中实现过滤器,但这是高维护,因为我想要添加过滤器,我必须更新它。 有没有更简单的方法来选择所有过滤的数据?
答案 0 :(得分:0)
不确定为什么你认为选择“多页数据”很棘手。
当您选择当前页面上的所有项目时(例如,通过表格标题中的复选框),django将为您提供所有页面中的“全选”项目。执行此操作的链接会在操作选择后立即显示。