django后台管理中导出Excel表格与其它表格数据等功能
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)