我使用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(),但没有运气。
有关如何解决此问题的任何想法?提前谢谢!
答案 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']