我有名为 TestResults 的 django 模型
Class TestResults(models)
chemical_name charfield
value floatfield
unit charfield
method charfield
normal_limit charfield
caution_limit charfield
color charfield
Run Code Online (Sandbox Code Playgroud)
现在,
下面的代码将生成油表,其中包含以下字段。
fields = ('Test Name', 'Value', 'Unit', 'Method',
'Normal Limit', 'Caution Limit')
all_oils = [(test.chemical_name, test.value, test.unit, test.method,
test.normal_limit, test.caution_limit)
for test in TestResult.objects.all())]
oil_table = Table([fields] + all_oils
oil_table.setStyle(TableStyle([('BACKGROUND', (0, 0), (-1, 0), '#a7a5a5'),
('FONTSIZE', (0, 0), (-1, 0), 6),
('GRID', (0, 0), (-1, -1), 2, '#a7a5a5'),
('FONTSIZE', (0, 0), (-1, -1), 8),
('FONTNAME',(1,1),(1,-1),'Times-Bold')]))
Run Code Online (Sandbox Code Playgroud)
现在我怎样才能为每列提供动态颜色。假设我的 TestResult 模型有颜色字段 (I,e color=red)
在报告中,我想要来自模型对象的第二列的动态颜色
我怎样才能实现这个目标?
也许我错过了一些东西,但这看起来很简单。
在您的对象中,将所需的颜色存储在变量中,例如color有效的 ReportLab 颜色规范(例如十六进制颜色值字符串)。然后,当您构建报告时,如果您想设置背景颜色,只需为列中的所有单元格设置背景颜色即可。例如,要设置列的背景x,请将以下内容添加到您的TableStyle:
('BACKGROUND', (x, 0), (x, -1), anObject.color)
Run Code Online (Sandbox Code Playgroud)
您可以在 中添加'BACKGROUND'任意数量的样式TableStyle,因此您可以对要更改颜色的每一列执行此操作。