Цвет ячейки Django-Tables2

Вопрос: Где я могу отредактировать свой код django, чтобы изменить цвет фона отдельных ячеек на основе бизнес-логики?

В моем views.py у меня есть логика, которая фиксирует максимальное значение столбца 'pts':

def show_teams(request):
reg = Teamoffense.objects.filter(~Q(rk='RK'))
pts = Teamoffense.objects.filter(~Q(pts='PTS')).values('pts')
seq = [item['pts'] for item in pts]
maxseq = max(seq)

table = SimpleTable(reg)
table_to_report = RequestConfig(request).configure(table)
if table_to_report:
    return create_report_http_response(table_to_report, request)
return render(request, 'index.html', {
    'table': table,
    'reg': reg,
    'maxseq': maxseq,
})

Как я могу сделать любую ячейку с максимальным значением в этом столбце bgcolor = 'green'? В настоящее время у меня есть простая таблица, которая выглядит так:

class SimpleTable(TableReport):

class Meta:
    model = Teamoffense
    exclude = ("column1","column2")
    exclude_from_report = ("column1","column2")
    attrs = {'class': 'paleblue'}

1 ответ

Решение

После дополнительных исследований, посвященных Django-Tables2 API Docs, я обнаружил, что в моем случае необходимы именно методы Table.render_foo. Это меняет способ отображения столбца. Убедитесь, что вы установили column.attrs, а не self.attrs, потому что по моему опыту именно так я смог установить стиль отдельной ячейки.

#tables.py
import django_tables2 as tables
from .models import MyTable
from MyApp import views


class SimpleTable(tables.Table):


    def __init__(self, *args, **kwargs):
        super(SimpleTable, self).__init__(*args, **kwargs)
        self.maxpts = views.maxpts

    #render_foo example method
    def render_pts(self, value, column):
        if value == self.maxpts:
            column.attrs = {'td': {'bgcolor': 'lightgreen'}}
        else:
            column.attrs = {'td': {}}
        return value


    class Meta:
        model = MyTable
        attrs = {'class': 'paleblue'}
Другие вопросы по тегам