Django - 从Geraldo报告中移除多余的Unicode符号

1 投票
1 回答
742 浏览
提问于 2025-04-16 15:08

我正在使用geraldo/reportlab来生成数据库的部分报告。根据我的理解,Reportlab一次只能处理一个查询结果。因此,我的报告中的某些内容是从多对多字段和外键中提取出来的。

比如,在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(),但都没有成功。

有没有什么办法可以解决这个问题?提前谢谢大家!

1 个回答

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

撰写回答