Лучший способ настроить динамическую таблицу в django tables2 (например, Meta class) - PullRequest
0 голосов
/ 14 мая 2019

Предисловие: я думаю, что я могу упустить более фундаментальную деталь, но здесь идет речь ...

Я создаю таблицу (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 голосов
/ 14 мая 2019

Сразу после публикации вопроса я нашел один вариант. Если вы оберните данные столбца в <div style="width:200px">Column Text</div>, table-layout:auto будет это учитывать. Таким образом, вы можете настроить браузер на размер всех ваших столбцов автоматически, кроме тех, у которых div содержит данные. Не совсем то, что я просил выше, но работает.

...