【问题标题】:How to change color of Django-tables row?如何更改 Django-tables 行的颜色?
【发布时间】:2016-05-29 18:29:48
【问题描述】:

是否可以根据当前对象的值更改行的颜色?

就我而言,我有一个从模型Job 创建的tableJob 具有属性 delivery。例如,如果job.delivery 是“已交付”,我想将行的颜色更改为红色。

我唯一想到的就是使用JQuery,但我不确定这是否是矫枉过正。

class MyOrdersTable(tables.Table):
    edit_entries = tables.TemplateColumn(
            '{% if not record.translator %}<a href="/jobs/update/{{record.id}}">Edit Order</a>{% else %} Can\'t edit order, translator has been assigned. {% endif %}')
    price = tables.Column(default='Not Yet',verbose_name='Price')
    translator = tables.Column(default='Not Yet',verbose_name='Translator')
    progress = tables.TemplateColumn('{{record.delivery.get_status_display}}',verbose_name='Progress')

    class Meta:
        model = Job
        attrs = {'class': 'table table-striped table-bordered table-hover', 'width': '70%'}
        fields = (
            'translator', 'short_description', 'language_from', 'language_to', 'level', 'created', 'modified', 'price',
            'progress','edit_entries')
        empty_text = """You haven't order a translation yet. Can we help you?"""

【问题讨论】:

  • 这回答了你的问题吗?
  • @Jieter 是的,谢谢你的回答,我忘记检查解决了。

标签: django django-models html-table django-tables2


【解决方案1】:

是的,从 django-tables2 v1.2.0 开始,您可以使用 row attributes:

class MyOrdersTable(tables.Table):
    # [...]
    class Meta:
        model = Jub
        row_attrs = {
            'data-delivery': lambda record: record.delivery
        }

这将呈现这样的行:

<tr [...] data-delivery="delivered"><td>....</tr>
<tr [...] data-delivery="peding"><td>....</tr>

您可以使用 data 属性通过一些 CSS 来定位行:

tr[data-delivery='deliverd'] {
    background-color: #f2dede;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-18
    • 2013-05-28
    • 2011-01-12
    • 2021-12-30
    相关资源
    最近更新 更多