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