Django-' QuerySet'对象没有属性

时间:2014-08-20 15:24:52

标签: python django django-queryset

我希望有人可以帮我一把。我有一张桌子里面的表格。在表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

任何人都可以给我一个如何解决这个问题的提示吗?或者只是指出我正确的方向。

任何帮助都将非常感激。感谢

1 个答案:

答案 0 :(得分:3)

你正在迭代形式中的facturas。要从一个事实中获取特定nombre_cliente属性,您需要使用facturas.nombre_cliente而不是form.nombre_cliente