在Django table2中设置动态表的最佳方法(例如Meta类)

时间:2019-05-13 21:44:18

标签: html css django django-tables2

前言:我想我可能会遗漏一些更基本的细节,但是这里...

我正在生成一个具有动态列计数的表(https://django-tables2.readthedocs.io/en/latest/),当我们最终得到一个包含许多列的表时,这会导致列宽需求的问题。我的用户希望某些列比其他列宽,而不会丢失其他列中的任何文本而导致溢出。可以将桌子的宽度超过100%(例如1500像素)。

我不能使用style='table-width:auto',因为这不符合我设置的特定列宽。我可以使用'table-width:fixed;width:$WIDTH',但是我现在还不够快,无法在Meta类中定义宽度(或者可以吗?)。

我可能需要做的是这样的事情?我意识到Meta并不是真的应该这样工作。

class ExampleTable(tables.Table):
    def __init__(self, *args, **kwargs):
        self.total_name_columns = self.get_total_name_columns()
        self.table_width = 500 + (120 * self.total_name_columns)
        super(ExampleTable, self).__init__(*args, **kwargs)

    class Meta:
       # How would the value be dynamic like this?
       attrs = {'class': 'paleblue',  'style':'table-layout:fixed;width:%spx;' % (self.table_width) } 

我认为另一种选择可能是将self.table_width值发送到模板中的某个位置,并在加载页面后使用JS来调整表的大小,但是我想问一问其他人是否有其他解决方案的经验第一。谢谢!

1 个答案:

答案 0 :(得分:0)

发布问题后,我立即找到了一个选择。如果将列数据包装在<div style="width:200px">Column Text</div>中,则table-layout:auto将遵守此规定。因此,您可以使浏览器自动调整所有列的大小,但带有div的列会包装数据。完全不符合我的要求,但确实可以。