Я использую SingleTableMixin
и FilterView
в Django для рендеринга формы фильтра и таблицы.На базовом уровне это работает очень хорошо.
Теперь в таблице столько столбцов, сколько в модели есть полей (как и должно быть), но я хотел бы отобразить ТОЛЬКО столбцы, для которых пользователь предоставил входные данные в форме фильтра, и исключить другие столбцы.динамически.
Я пытаюсь добиться этого с помощью def get_table_kwargs(self):
Вот мой код:
class FactListView(SingleTableMixin, FilterView):
table_class = FactTable
filterset_class = FactFilter
template_name = 'main/table.html'
def get_table_kwargs(self):
filtered = self.filterset.form.data()
columns = {}
fact_fields = [
"field_name1",
"field_name2",
"field_name3",
"other fields",
"...",
]
for field, value in filtered():
if value is not None:
columns.update({field: value})
fact_fields[:] = [x for x in fact_fields if x not in columns]
return {
'exclude': fact_fields
}
В настоящее время я получаю сообщение об ошибке: «TypeError at / table / 'dict 'объект не вызывается' Это потому что я нуб.Поэтому я был бы очень признателен за комментарии по этой конкретной ошибке, которая возникает из filtered = self.filterset.form.data()
, а также по общей логике.
Большое спасибо заранее!