django后台管理中导出Excel表格与其它表格数据等功能

时间:2024-01-25 17:36:29
from import_export import resources from .order_models import Order class OrderResource(resources.ModelResource): class Meta: # 模型是哪个 model = Order # 要什么字段的数据? 不写则默认全部 # fields=() # 当使用了默认全部 fields时,也会有些字段不需要,那么就要使用exclude,表示不需要的字段 # exclude=('id',) # 因为导出的外键是数值,并不能显示相关信息,所以需要重新定义字段获取外键中的明显字段 fields = ('id', 'userid__user__username', 'trader_userid__user__username', 'team_leader_userid__user__username', 'urban_userid__user__username', 'province_userid__user__username', 'licensing_userid__user__username', 'order_nationally__name', 'order_province__name', 'order_urban__name', 'order_team__name', 'store__name', 'goodsid__name', 'created_at_time', 'updated_at', 'douyinhao', 'douyinname', 'hezuoma', 'shoujihao', 'weixin', 'douyin_have_num', 'pay_method', 'order_price', 'offline_pay_method', 'offline_price', 'begin_show_time', 'no_appointments', 'authorization', 'executestate', 'chargebacks', 'refundsuccessful', 'sale_remark', 'leader_remark', 'licensing_remark', 'trader_remark', 'manage_remark', 'promotion_cost', ) # 设置导出的顺序 export_order = ('id', 'userid__user__username', 'trader_userid__user__username', 'team_leader_userid__user__username', 'urban_userid__user__username', 'province_userid__user__username', 'licensing_userid__user__username', 'order_nationally__name', 'order_province__name', 'order_urban__name', 'order_team__name', 'store__name', 'goodsid__name', 'created_at_time', 'updated_at', 'douyinhao', 'douyinname', 'hezuoma', 'shoujihao', 'weixin', 'douyin_have_num', 'pay_method', 'order_price', 'offline_pay_method', 'offline_price', 'begin_show_time', 'no_appointments', 'authorization', 'executestate', 'chargebacks', 'refundsuccessful', 'sale_remark', 'leader_remark', 'licensing_remark', 'trader_remark', 'manage_remark', 'promotion_cost', ) def get_export_headers(self): headers = [] for field_name in self.get_export_order(): headers.append(self.get_export_field_name(field_name)) return headers def get_export_field_name(self, field_name): column_names = { 'id': '订单id号', 'userid__user__username': '下单人', 'trader_userid__user__username': '投流人', 'team_leader_userid__user__username': '小组长', 'urban_userid__user__username': '市经理', 'province_userid__user__username': '省负责人', 'licensing_userid__user__username': '授权人', 'order_nationally__name': '国部门', 'order_province__name': '省部门', 'order_urban__name': '市部门', 'order_team__name': '组部门', 'store__name': '商店名', 'goodsid__name': '商品名', 'created_at_time': '创建时间', 'updated_at': '更新时间', 'douyinhao': '抖音号', 'douyinname': '抖音名', 'hezuoma': '合作码', 'shoujihao': '手机号', 'weixin': '微信号', 'douyin_have_num': '下单前已有粉丝数量', 'pay_method': '线上支付方式', 'order_price': '订单金额', 'offline_pay_method': '线下支付方式', 'offline_price': '线下收款金额', 'begin_show_time': '开播时间', 'no_appointments': '预约与否', 'authorization': '授权状态', 'executestate': '投流状态', 'chargebacks': '退单', 'refundsuccessful': '退单', 'sale_remark': '销售备注', 'leader_remark': '组长备注', 'licensing_remark': '授权人备注', 'trader_remark': '投流手备注', 'manage_remark': '市经理备注', 'promotion_cost': '投流成本', 'dingdanyingli': '本单盈利', } return column_names.get(field_name, field_name)