首页 > 解决方案 > DJANGO 渲染为 PDF , QUERYSET

问题描述

我正在使用我的 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>

标签: djangopdfrender

解决方案


这根本不是正确的方法。您应该删除所有这些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 %}

推荐阅读