python - django-tables2 为不同的行指定不同的属性

标签 python css checkbox django-tables2

我想用 django-tables2 创建一个表,这样不同的行具有不同的属性。

默认情况下我会得到任何一个

<tr class="odd">

<tr class="even">

如何为某些行指定我自己的类?

同样,如果我有一个 CheckBoxColumn 并且我为此列指定了一些数据,它会进入:

<input type="checkbox" name="col" value="123"/>

这对于确定选中了哪个复选框非常有用。但是,如何在创建表时将某些复选框设置为已选中?

我的场景:用户从一个大表中选择一些行。例如,表有

  • 橙色 1
  • 橙色 2
  • 苹果 5
  • 橙色 3
  • 苹果 4
  • cucumber 7
  • 苹果 1

用户选择了 苹果 5 cucumber 7

然后我想显示所有苹果和所有 cucumber ,因为用户至少选择了一个苹果和至少一个 cucumber 。这允许用户查看其他相关条目:

  • 苹果 5
  • 苹果 4
  • cucumber 7

但是,我想通过使用 css 和/或显示选中的复选框来突出显示用户实际选择的条目:

  • 苹果 5
  • 苹果 4
  • cucumber 7

最佳答案

好吧,让我发布我自己的解决方案。

我已经复制了标准模板 table.html 并对其进行了编辑。我只改了一行:

<tbody>
    {% for row in table.page.object_list|default:table.rows %} {# support pagination #}
    {% block table.tbody.row %}
    <tr class="{{ row.tr_class }}">  <!-- CLASS FOR EACH ROW -->

代替

    <tr class="{% cycle "odd" "even" %}">

这样您就可以为表中的每一行设置不同的类。它仍然是向您的表类添加一个不可见的列:

class MyTable(tables.Table):
  tr_class=tables.Column(visible=False)
  ... # other columns

之后,无论何时创建表格,您都可以为任何特定行设置任何 CSS 类。请记住使用修改后的模板:

{% render_table div_table "modifiedtable.html" %}  

当然,你也可以改变原来的table.html

谁能提出一个更优雅的解决方案?

总的来说,我觉得 django_tables2 仍然缺少许多重要的功能,所以每次我尝试做一些不平凡的事情时,我都必须重新发明轮子。

定义tr_class

要使用它,您必须使用 custom rendering .例如:

class MyTable(tables.Table):
 tr_class=tables.Column(visible=False, empty_values=())
 def render_tr_class(self, value):
   if value.chosen == True:
     return 'highlight'

tr 将被赋予 highlight 类。

关于python - django-tables2 为不同的行指定不同的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9525670/

相关文章:

python - 如何对列求和并将结果作为一行附加到同一数据框中?

python - 如何将 MongoDB 查询转换为 JSON?

jquery - 将固定列宽设置为 JQGrid

css - ReactJS 无法识别小屏幕上的触摸/点击

javascript - 如果子复选框被选中,jQuery 检查父复选框

python - 在 Python 和 R 之间移植 XGBoost 模型

python - 估计的自由度不足

css - 在 ReactJs 组件中添加或删除类

javascript - JQuery 正在更改复选框值,但复选框未显示为已选中

php - 有带有文本和复选框的 HTML 表单 - 如何将复选框响应发布到 Mysql 表