DJANGO渲染为PDF,QUERYSET

时间:2019-01-24 11:39:32

标签: django pdf render

我正在我的django-admin上工作,我正在尝试将obj渲染为pdf。这是我的定义:

def Imprimir(self, request, obj):

    data = {
            'id':obj.values_list('id', flat=True),
            'freguesia': obj.values_list('freguesia',flat=True), 
            'rua': obj.values_list('rua',flat=True),
            'porta': obj.values_list('porta',flat=True),
            'tavaria':obj.values_list('tipo_avaria',flat=True),
    }
    pdf = render_to_pdf('daa/imprimir/avarias_pdf.html', data)
    return HttpResponse(pdf, content_type='application/pdf')    

https://i.stack.imgur.com/22V1I.png

问题是仅显示我的查询集和ID,我想显示查询集的名称而不是ID。有人可以帮助我吗?

我的avarias_pdf.html

<table style="width:100%">
                <tr>
                    <th>ID:</th>
                    <th>Freguesia:</th>
                    <th>Rua:</th>  
                    <th>Porta:</th>
                    <th>Tipo avaria:</th>
                 </tr>
                  <tr> 
                        <td>{{id}}</td>   
                        <td>{{freguesia}}</td>
                        <td>{{rua}}</td> 
                        <td>{{porta}} </td>
                        <td>{{tavaria}}</td>
                    </tr>

        </table>

1 个答案:

答案 0 :(得分:0)

这根本不是正确的方法。您应该删除所有这些values_list调用,并遍历模板中的查询集。

def Imprimir(self, request, obj):
    data = {'obj': obj}
    pdf = render_to_pdf('daa/imprimir/avarias_pdf.html', data)
    return HttpResponse(pdf, content_type='application/pdf')    

...

{% for item in obj %}
    <tr>
        <td>{{ item.id }}</td>   
        <td>{{ item.freguesia }}</td>
        <td>{{ item.rua }}</td> 
        <td>{{ item.porta }} </td>
        <td>{{ item.tavaria }}</td>
    </tr>
{% endfor %}