gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 22:05:57 24 4
gpt4 key购买 nike

我想用 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/

24 4 0