我正在使用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符号“ u”。我无法遍历ObjectValue中的lambda函数。我尝试覆盖geraldo类和定义,例如do_before_generate(),但是没有运气。

有想法该怎么解决这个吗?提前致谢!

最佳答案

尝试:

[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']

10-07 21:53