Я думаю, что может быть проблема с рабочим проектом django, который я унаследовал. Я использую django-tables2 для отображения информации. В основном это работает интуитивно понятным способом.
Однако некоторые таблицы, когда я их отображаю, не отображают фактические столбцы, содержащие ячейки данных. Все свойства таблицы отображаются в виде столбцов, но не столбцы данных. Я думаю, что проблема может быть связана с тем, как выложена модель.
данная ячейка имеет свойство строки и столбца. У строк есть свойство cell_set и table, но нет column_set. Таблицы имеют свойства row_set и column_set.
Так что проблема в том, что у строк нет свойства column_set? Поэтому, когда он ищет данные для рендеринга, он не находит эти столбцы.
Если я пытаюсь получить все ячейки, связанные со строкой, это неуклюжий процесс итерации по каждому столбцу в поисках ячейки в наборе ячеек, принадлежащем этому столбцу (см. Ниже).
(в некоторых случаях я могу создавать настраиваемые столбцы в представлениях django_tables2, но у меня есть приложение, в котором пользователи могут сами создавать таблицы, которые должны отображаться динамически.)
Например, вот метод __str__ для строки:
def __str__(self):
cell_values = ()
for column in self.table.column_set.all().order_by('column_name'):
cell = self.cell_set.get(column__column_name=column.column_name)
if cell:
cell_values.append(cell.value)
else:
cell_values.append("")
return "::".join(cell_values)
На мой взгляд, это кажется очень неуклюжим, и я подозреваю, что это связано с недостатком модели, но я недостаточно хорошо понимаю Джанго, чтобы знать, где. Я подозреваю, что трудность извлечения значений ячеек для строки лежит в основе рендеринга по умолчанию, который не находит их.
В РЕДАКЦИИ:
чтобы уточнить, что я рендерил таблицу, передав ей Queryset. Может быть, вместо этого мне нужно передать ему серию диктов, как в https://django -tables2.readthedocs.io / en / latest / pages / table-data.html # table-data ? Я бы предпочел не идти этим путем, так как он выглядит неуклюжим.