首页 > 解决方案 > 在 django tables2 中设置动态表的最佳方法(例如 Meta 类)

问题描述

前言:我想我可能遗漏了一个更基本的细节,但这里有......

我正在生成一个具有动态列数的表(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 来调整表格的大小,但我想我会先询问其他人是否有其他解决方案的经验。谢谢!

标签: htmlcssdjangodjango-tables2

解决方案


发布问题后,我立即找到了一个选项。如果您将列数据包装在 a 中<div style="width:200px">Column Text</div>table-layout:auto将尊重这一点。所以你可以让浏览器自动调整所有列的大小,除了那些用 div 包裹数据的列。不是我上面要求的,但确实有效。


推荐阅读