我希望有人可以帮我一把。我有一张桌子里面的表格。在表a中有每行的复选框,因此用户可以选择导出到excel文件的文档。这是我的HTML:
<tbody>
{% for factura in facturas %}
<tr>
<td><i class="fa fa-file"> <a href="{% url 'ver_Factura' factura.pk %}">Ver</a></i>
<div class="checkbox">
<label>
<input type="checkbox" name="factura" value="{{ factura.pk }}">
</label>
</div>
</td>
<td>{{ factura.nombre_cliente }}</td>
<td>{{factura.numero_De_Factura }}</td>
<td>{{factura.fecha_factura }}</td>
</tr>
{% endfor %}
</tbody>
我的views.py中包含此导出函数的代码:
def descarga(request):
selected_values = request.POST.getlist('factura')
if request.method == 'POST':
form = Factura.objects.filter(id__in=selected_values)
**print form**
if form:
book = xlwt.Workbook(encoding='utf8')
sheet = book.add_sheet('report')
sheet.col(0).width = int(13*380)
sheet.col(1).width = int(13*380)
sheet.col(2).width = int(13*380)
sheet.col(3).width = int(13*380)
sheet.col(4).width = int(13*380)
sheet.col(5).width = int(13*380)
sheet.col(6).width = int(13*380)
sheet.col(7).width = int(13*380)
(...Style of the sheet here...)
(...Headers of the sheet here)
**for facturas in form:
data = {
"Cliente": form.nombre_cliente,
"Fecha de Factura":form.fecha_factura,
"Tipo de Factura": form.tipo_Factura,
"Numero de Factura": form.numero_De_Factura,
"Descripcion": form.descripcion,
"Subtotal": form.importe_sin_iva,
"IVA": form.iva,
"Precio": form.importe_Total,
}**
for column, key in enumerate(header, start=1):
sheet.write(1, column, str(data[key]), body_style)
response = HttpResponse(mimetype='application/vnd.ms-excel')
response['Content-Disposition'] = 'attachment; filename=report.xls'
response = render_to_response("facturas.html",context_instance=RequestContext(request), mimetype='application/vnd.ms-excel')
book.save(response)
return response
正如你所看到我正在打印“表单”对象以查看它在控制台上包含的内容和(如果我在表中只选择了2个文件)我在控制台中得到了这个:
[<Factura: Andreani Logistica S.A - 2231231243>, <Factura: Pechugs LAru - 23423421>]
问题在于这一部分:
**for facturas in form:
data = {
"Cliente": form.nombre_cliente,
"Fecha de Factura":form.fecha_factura,
"Tipo de Factura": form.tipo_Factura,
"Numero de Factura": form.numero_De_Factura,
"Descripcion": form.descripcion,
"Subtotal": form.importe_sin_iva,
"IVA": form.iva,
"Precio": form.importe_Total,
}**
我得到错误:
'QuerySet' object has no attribute 'nombre_cliente'
但正如您所看到的,querySet中有一个具有该值的对象 Factura 。
任何人都可以给我一个如何解决这个问题的提示吗?或者只是指出我正确的方向。
任何帮助都将非常感激。感谢
答案 0 :(得分:3)
你正在迭代形式中的facturas。要从一个事实中获取特定nombre_cliente
属性,您需要使用facturas.nombre_cliente
而不是form.nombre_cliente
。