You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django Admin中通过django-import-export仅导出选中记录?

在Django Admin中为django-import-export添加导出选中记录功能

实现步骤:

  1. 定义模型资源类
    和常规使用django-import-export一样,先为你的模型定义资源类,可指定要导出的字段:
from import_export import resources
from .models import YourModel

class YourModelResource(resources.ModelResource):
    class Meta:
        model = YourModel
        # 可选:手动指定导出字段,默认导出所有模型字段
        # fields = ('id', 'name', 'created_at')
  1. 编写自定义导出动作函数
    这个函数会接收选中的记录集合,调用资源类导出数据并返回下载响应:
from django.http import HttpResponse

def export_selected_records(modeladmin, request, queryset):
    resource = YourModelResource()
    # 仅导出选中的记录集合
    dataset = resource.export(queryset)
    
    # 以CSV格式为例,如需Excel可替换为dataset.xlsx
    response = HttpResponse(dataset.csv, content_type='text/csv')
    response['Content-Disposition'] = 'attachment; filename="selected_yourmodel.csv"'
    return response

# 设置动作在Admin界面的显示名称
export_selected_records.short_description = "导出选中的记录"
  1. 在Admin类中注册动作
    继承ImportExportModelAdmin,并将自定义动作添加到动作列表:
from django.contrib import admin
from import_export.admin import ImportExportModelAdmin

@admin.register(YourModel)
class YourModelAdmin(ImportExportModelAdmin):
    resource_class = YourModelResource
    # 将自定义动作加入Admin的批量操作选项
    actions = [export_selected_records]

扩展说明:

  • 如果需要导出Excel格式,只需修改代码中的dataset.csv为dataset.xlsx,同时将content_type改为'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',文件名也对应改为.xlsx后缀。
  • 你可以根据需求在资源类中自定义导出字段、格式化数据等操作,和常规django-import-export的用法完全兼容。

内容的提问来源于stack exchange,提问作者Perry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 12:22:33