Python XLWT 外键值
我正在把数据库里的字段导出到Excel文件,一切都很顺利,但我的外键字段显示的是外键的ID,而不是实际的值。
我该怎么解决这个问题呢?
这是我的代码:
book = xlwt.Workbook(encoding='utf8')
sheet = book.add_sheet('Expense summary', cell_overwrite_ok=True)
header_style = xlwt.easyxf('font:height 280, color blue, bold 1; border: bottom thick;')
sum_style = xlwt.easyxf('font:height 200, color green, bold 1; border: top thick;')
date_style = xlwt.XFStyle()
date_style.num_format_str = 'DD-MM-YYYY'
currency_style = xlwt.XFStyle()
currency_style.num_format_str = '#,##0.00'
xls_values = expense.filter(
user=request.user.id).values_list('date', 'amount', 'towho', 'forwhat', 'category', 'payment_method')
headers = (ugettext("Date"), ugettext("Amount"), ugettext("To who"), ugettext("For what"), ugettext("Category"), ugettext("Payment method"))
for i, header in enumerate(headers):
col_width = 256 * 20
sheet.col(i).width = col_width
sheet.row(0).write(i, header, header_style)
for row, rowdata in enumerate(xls_values):
for col, val in enumerate(rowdata):
if col == 0:
sheet.write(row + 1, col, val, date_style)
else:
if col == 1:
sheet.write(row + 1, col, val, currency_style)
else:
sheet.write(row + 1, col, val)
response = HttpResponse(mimetype='application/vnd.ms-excel')
response['Content-Disposition'] = 'attachment; filename=sample.xls'
book.save(response)
return response
类别字段返回的是ID号码,而不是它的实际值。
提前谢谢你!
1 个回答
2
与其一个一个列举rowdata
,不如逐个字段生成行数据:
for row, o in enumerate(xls_values):
sheet.write(row + 1, 0, o.my_first_field, date_style)
sheet.write(row + 1, 1, o.my_second_field, val, currency_style)
sheet.write(row + 1, 2, o.my_category_field.name, val) # assuming name is what you want