Reportlab: динамический цвет для столбца таблицы (цвет сохраняется в модели django) в reportlab

У меня есть модель Django под названием TestResults

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)

В отчете я хочу динамический цвет для второго столбца, который исходит от объектов модели

Как мне этого добиться?

1 ответ

Может быть, я что-то упустил, но это кажется действительно легким.

В ваших объектах храните нужный вам цвет в такой переменной, как color в качестве действительной спецификации цвета ReportLab (например, строка шестнадцатеричного значения цвета). Затем, когда вы создаете свой отчет, если вы хотите установить цвет фона, просто установите его для всех ячеек в столбце. Например, чтобы установить фон столбца xДобавьте следующее к вашему TableStyle:

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

Вы можете положить как можно больше 'BACKGROUND' стили, как вы хотите в TableStyle, так что вы можете сделать это для каждого столбца, для которого вы хотите изменить цвет.

Другие вопросы по тегам