Django - 从geraldo报告中删除无关的unicode符号

时间:2011-04-05 17:58:08

标签: python django unicode reportlab

我使用geraldo / reportlab生成关于我的数据库的部分报告。 Reportlab只允许我一次执行一个查询集(据我所知)。结果,我的报告的某些方面被从ManyToMany字段和ForeignKeys中拉出来。

例如,reports.py中的band_detail类:

ObjectValue(attribute_name='number', left = 9*cm, get_value=lambda instance: Drawing.objects.filter(number=DrawingRevision.objects.filter(part__id=instance.id).values('drawing')).values_list('number', flat=True))

显示为:

[u'1', u'2', u'3']

......等等。我不知道如何摆脱unicode符号“你”。我不能在ObjectValue中迭代我的lambda函数。我尝试重写geraldo类和定义,例如do_before_generate(),但没有运气。

有关如何解决此问题的任何想法?提前谢谢!

1 个答案:

答案 0 :(得分:1)

尝试:

[s.encode() for s in
 ObjectValue(attribute_name='number',
            left = 9*cm, 
            get_value=lambda instance:
               Drawing.objects.filter(number=DrawingRevision.objects
                                             .filter(part__id=instance.id)
                                             .values('drawing')
                                     ).values_list('number', flat=True)
           )
]

ObjectValue(attribute_name='number',
            left = 9*cm, 
            get_value=lambda instance:
            [ n.encode() for n in
               Drawing.objects.filter(number=DrawingRevision.objects
                                             .filter(part__id=instance.id)
                                             .values('drawing')
                                     ).values_list('number', flat=True)
            ]
           )

这应该给你:

['1', '2', '3']