Как правильно отобразить таблицу внутри другой таблицы с помощью шаблонов Django
я использую таблицу для отображения значений в шаблоне django, и у меня есть вторичная таблица внутри моей основной таблицы (серая на картинке ниже) :
В двух таблицах используются одинаковые столбцы, и моя проблема в том, что столбцы не выровнены (например, ячейка "n" в моей первой строке не выровнена с моей ячейкой "n" во второй таблице, потому что значения не имеют одинакового размера, и будет трудно узнать, чем "n" является в столбце "n", когда у меня будут "реальные" значения)
(Я создал вторичную таблицу для решения этой проблемы: DJANGO - закрыть две кнопки коллапса одной, но если вы думаете, что есть лучший способ сделать это, и избежать моей проблемы выравнивания, не стесняйтесь сказать мне)
Есть ли способ "приклеить" таблицу к боковой стороне ячейки, или указать размер столбцов, чтобы "заставить" их выравниваться?
Вот упрощенная версия моего кода :
<div class="card">
<div class="card-body p-0">
<table class="table" style="width: 100%;">
<tbody>
<tr>
<th bgcolor="gray" style="color: white">aaaaaaaa</th>
<th bgcolor="gray" style="color: white">bbbbbbbb</th>
...
<th bgcolor="gray" style="color: white">uuuuuuuu</th>
<th bgcolor="gray" style="color: white">vvvv</th>
</tr>
<tr>
<td style="width:3%;">
<button type="button" class="btn btn btn-primary float-center" data-toggle="collapse" data-target="#test">aaaaaaaaa</button>
<td style="width:3%;">bbbbbbbbb</td>
...
<td style="width:3%;">uuuuuuuuuuuuuuu</td>
<td>
<a href="#" class="btn btn-danger float-center">vvvv</a>
</td>
</tr>
<tr>
<td colspan="22">
<div class="collapse" id="test">
<div class="card">
<div class="card-body p-0">
<table class="table">
<tr>
<td bgcolor="#E5E5E5" style="width:3%;">aaaaaaaaa</td>
<td bgcolor="#E5E5E5" style="width:3%;">bbb</td>
...
<td bgcolor="#E5E5E5" style="width:3%;">uuuuuuuuuuuuuuuuuu</td>
<td bgcolor="#E5E5E5" style="width:3%;">
<a href="#" class="btn btn-danger float-center">vvvv</a>
</td>
</tr>
</table>
</div>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
Спасибо за помощь
Просто сделайте это в своем коде. Это называется вложенной таблицей.
<table>
<tr>
<td>
Add here your second table
</td>
</tr>
</table>
Мне кажется, что в широких таблицах часто приятнее выглядит группировка двух или трех небольших элементов в одной ячейке таблицы:
<th>Height<br>Width<br>Depth</th>
...
<td>
{{item.height}}<br>{{item.width}}<br>{{item.depth}}
</td>
или
<td>{{item_size|linebreaks}}</td>
Эта последняя форма может быть объединена с методом на модели, чтобы собрать элементы данных (поля модели) вместе для шаблона
def item_size(self):
return '\n'.join(
f'{self.height} h',
f'{self.width} w',
f'{self.depth} d'
)
часто с небольшим переформатированием данных, которое легко сделать в коде Python. (например, если некоторые предметы имеют цилиндрическую форму, вместо высоты и ширины генерируйте f'{self.diameter} dia'
)