Как получить значение поля, которое исключено для изменения фона строки - PullRequest
0 голосов
/ 21 октября 2018

Я хочу отобразить таблицу, в которой некоторые поля исключены, потому что я не хочу отображать их в таблице.В то же время я хочу изменить цвет в строке на основе исключенных значений.Можно ли это сделать с помощью django-table2?

import django_tables2 as tables
from web_logic.models import Stations
from django_tables2.utils import A


class StationTable(tables.Table):
    """

    """

    station_id = tables.LinkColumn()
    rack_sum = tables.LinkColumn("racks_page", args=[A('pk')], verbose_name='Кол-во стоек')
    status = tables.BooleanColumn()

    def __init__(self, *args, **kwargs):
        super(StationTable, self).__init__(*args, **kwargs)

    def render_station_id(self, value):
        print(value)
        return "%s " % value

    class Meta:
        model = Stations
        exclude = (
            "id",
            "onboot_time",
            'certificat_key',
            'private_key',
            "status",
            "ipadress",
            'latitude',
            'longitude',
        )
        template_name = 'django_tables2/bootstrap.html'
        attrs = {
            "class": "table",
            "td": {"class": "table-hover",},
            "thead": {"class": "table-dark"},
        }

Например, поле состояния описывает состояние для всей строки.Это может быть True или False.Я не хочу отображать столбец с этим полем, но хочу выделить (изменить цвет линии) на основе значения для этого поля.Как я могу это сделать?

1 Ответ

0 голосов
/ 22 октября 2018

Да, вы можете сделать это, используя row_attrs:

class StationTable(tables.Table):
    station_id = tables.LinkColumn()
    rack_sum = tables.LinkColumn("racks_page", args=[A('pk')], verbose_name='Кол-во стоек')

    def render_station_id(self, value):
        return "%s " % value

    class Meta:
        model = Stations
        exclude = (
            "id",
            "onboot_time",
            'certificat_key',
            'private_key',
            "status",
            "ipadress",
            'latitude',
            'longitude',
        )
        template_name = 'django_tables2/bootstrap.html'
        attrs = {
            "class": "table",
            "td": {"class": "table-hover",},
            "thead": {"class": "table-dark"},
        }
        row_attrs = {
            "class": lambda record: "info" if record.status else ""
        }

Это добавит атрибут class="info" к тегу <tr> строк с status = True.

...