django输出pdf

django输出pdf,django,view,Django,View,大家好,我正处于django的学习阶段,所以请支持我。 我必须在django中生成pdf报告。我希望从数据库中选择详细信息并显示在pdf文档中。我正在使用report lab。 现在看一下代码 def pdf_view(request): response = HttpResponse(mimetype='application/pdf') response['Content-Disposition'] = 'attachment; filename=hello.pdf'

大家好,我正处于django的学习阶段,所以请支持我。 我必须在django中生成pdf报告。我希望从数据库中选择详细信息并显示在pdf文档中。我正在使用report lab。 现在看一下代码

def pdf_view(request):
    response = HttpResponse(mimetype='application/pdf')
    response['Content-Disposition'] = 'attachment; filename=hello.pdf'
    p = canvas.Canvas(response)
    details = Data.objects.all()
    print details

    p.drawString(20, 800, details)
    p.drawString(30, 700, "I am a Python Django Professional.")
    p.showPage()
    p.save()
    return response
现在,作为一个学习示例,我在模型中创建了两个字段

class Data(models.Model):
    first_name = models.CharField(max_length =100,blank=True,null=True)
    last_name = models.CharField(max_length =100,blank=True,null=True)

    def __unicode__(self):
        return self.first_name
我希望在pdf文档中,它应该显示名称s,无论我通过admin填写什么,但它给了我错误

'Data' object has no attribute 'decode'

Request Method:     GET
Request URL:    http://localhost:8000/view_pdf/
Django Version:     1.3
Exception Type:     AttributeError
Exception Value: 
我想从数据库中获取详细信息并显示在pdf文档中

'Data' object has no attribute 'decode'

如果你公布了真实的追踪结果,这会有所帮助

然而,我认为问题在于这一行:

p.drawString(20, 800, details)
Details是一个queryset,它是一个类似于列表的模型实例容器。它不是字符串,也不包含字符串。也许你想要这样的东西:

detail_string = u", ".join(unicode(obj) for obj in details) 
它在查询集中的每个对象上调用_unicode__)方法,并用逗号连接结果列表