Django:如何在django-tables2中更改列宽

时间:2013-11-07 21:48:49

标签: django python-2.7 django-tables2

我正在使用django-tables2的{​​{1}}来显示包含表格的网页。该表有多个行和列。某些列具有跨越多行的文本。这会创建不同高度的行。

我尝试过使用CSS,但似乎不会影响宽度:

{% render_table table %}

my views.py:

.my_col_2 {
    width: 100px;
}

使用django-tables2时,如何手动指定列的宽度和行的高度?

1 个答案:

答案 0 :(得分:1)

您必须选择宽度和/或高度作为列的限制因素。假设您无法指定内容长度,您可以选择截断显示的内容。

如图所示 Set the table column width constant regardless of the amount of text in its cells?Using CSS to create table cells of a specific width with no word wrapping ,很难或不可能直接设置表格列宽而不摆弄表格布局和宽度设置;或者,您可以将每个内容包装在div中,然后将格式应用于这些div。

为了在tables2中实现这一点,我覆盖了table.Column:

class DivWrappedColumn(tables.Column):

    def __init__(self, classname=None, *args, **kwargs):
        self.classname=classname
        super(DivWrappedColumn, self).__init__(*args, **kwargs)

    def render(self, value):
        return mark_safe("<div class='" + self.classname + "' >" +value+"</div>")

在表格中创建列:

    custom_column = DivWrappedColumn(classname='custom_column')

然后应用css:

div.custom_column {
  white-space: normal;
  width: 200px;
  height: 45px;
}

这会产生一个固定宽度的固定高度单元格,它会包裹直到没有更多的行然后截断。

或者,使用“white-space:nowrap”,并省略高度;然后单元格被截断(但用户可以滚动)。