编程语言
首页 > 编程语言> > python – Reportlab:reportlab中的表格列的动态颜色(存储在django模型中的颜色)

python – Reportlab:reportlab中的表格列的动态颜色(存储在django模型中的颜色)

作者:互联网

我有称为TestResults的django模型

models.py

Class TestResults(models)

   chemical_name charfield
   value    floatfield
   unit  charfield
   method  charfield
   normal_limit charfield
   caution_limit charfield
   color charfield

现在,

以下代码将生成油表,其中包含以下字段.

views.py

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

现在我该如何为每列提供动态颜色.假设我的TestResult模型有颜色字段(I,e color = red)

在报告中,我想要来自模型对象的第二列的动态颜色

我怎样才能做到这一点?

解决方法:

也许我错过了什么,但这似乎很容易.

在对象中,将所需的颜色存储在颜色等变量中,作为有效的ReportLab颜色规范(例如,十六进制颜色值的字符串).然后,当您构建报表时,如果要设置背景颜色,只需为列中的所有单元格设置它.例如,要设置列x的背景,请将以下内容添加到TableStyle:

('BACKGROUND', (x, 0), (x, -1), anObject.color)

您可以在TableStyle中添加任意数量的“BACKGROUND”样式,因此您可以为要更改颜色的每列执行此操作.

标签:python,reportlab
来源: https://codeday.me/bug/20190704/1378611.html