Найти - Пользователи
Полная версия: Flask-admin и динамическое скрытие или показ столбцов в таблице во view
Начало » Web » Flask-admin и динамическое скрытие или показ столбцов в таблице во view
1
alexbadaloff
Имеется обычная самая простая view:

 class MyModelView(sqla.ModelView):
    column_list = ['first', 'two’]

мне нужно на страничке добавить галочки в виде полей, чтобы включать/отключать столбцы в таблице. То есть отображение на странице отдельных столбцов.

Я например могу послать чтобы column_list переназначить. Но сама view не рефрешится.
Нагуглить не получилоь.

Я попробовал передать список столбцов из формы и переопределить column_list. Он меняется но view не обновляется. Как ее можно обновить? Или может есть способы попроще?
slav0nic
А что мешает передавать список полей через GET параметры например “?fields=col1,…colN” и менять self.column вьюшки, или в get_list_columns ?
исходники полистайте https://github.com/flask-admin/flask-admin/blob/7fa26ab227868ff7512bb25c26a30fd7d69184bc/flask_admin/model/base.py
сем не пользуюсь
alexbadaloff
Была такая мысль. Не уверен, нормально ли видеть в строке например 20 и более параметров?
Но за направление, спасибо.
slav0nic
хотите - храните в базе, сессии, куках, тут уже на вкус и цвет …
просто GET-параметры - самое простое
alexbadaloff
Я тут попробовал css класс с параметром display: none который меняется при клике checkbox. И присвоил его в td. Все ок. Скрывается быстро. Но когда возвращаю столбец, то слетают стили. И столбцы все в кучу сбиваются.
Видимо надо отловить какие ещё стили у td были по умолчанию и их восстанавливать. Пока сделал через url параметр.
py.user.next
alexbadaloff
Я тут попробовал css класс с параметром display: none который меняется при клике checkbox. И присвоил его в td. Все ок. Скрывается быстро. Но когда возвращаю столбец, то слетают стили.
Внутри td сделай div или span и у него стиль display меняй. Не трогай таблицы, они в разных браузерах по-разному сделаны, лучше их не трогать и вообще стараться не использовать (заменить на div'ы), кроме как для вывода табличных данных.
alexbadaloff
Отлично. Да. Так не ломаются стили таблицы. Осталось только понять как сохранить состояние между обновлениями страницы. Если сортировать по какому-нибудь видимому столбцу страница обновляется и скрытый столбец восстанавливается.
py.user.next
alexbadaloff
Осталось только понять как сохранить состояние между обновлениями страницы.
Нужно при скрытии столбца передать скрытый асинхронный запрос бэкенду с указанием пометить это состояние столбца в сессии данного клиента. При следующем выводе страницы бэкенд сначала посмотрит в сессии клиента, в каком состоянии столбец, и в соответствии с этим выведет таблицу. Сессия на стороне клиента поддерживается через печенье. Как только ты почистишь печенье, все настройки сессии слетят. Также можно добавить кнопку “установить по умолчанию”, которая сбросит все настройки с помощью запроса, чтобы сделать это без очистки печенья (в печенье может храниться ещё 100500 настроек, которые не надо стирать).
alexbadaloff
Спасибо за разъяснение. Может дойдут руки так сделать.
Пока сделал, формирование url по нажатию имени столбца. А в шаблоне уже GET и фильтрация.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB