Open bekab95 opened 5 years ago
from flask_admin.contrib.sqla import ModelView
from flask import request, url_for
class CustomModelView(ModelView):
def get_sort_links(self, column_key, sort_order):
if sort_order == 'asc':
next_sort_order = 'desc'
else:
next_sort_order = 'asc'
return {
'asc': url_for('.index', sort=column_key, sort_order='asc'),
'desc': url_for('.index', sort=column_key, sort_order='desc')
}.get(sort_order, url_for('.index'))
def scaffold_sortable_columns(self):
columns = super(CustomModelView, self).scaffold_sortable_columns()
sortable_columns = {}
for column in columns:
column_key = column[1]
column_name = column[0]
sort_links = self.get_sort_links(column_key, 'asc')
sort_links += ' / '
sort_links += self.get_sort_links(column_key, 'desc')
sortable_columns[column_name] = (column_key, sort_links)
return sortable_columns
def get_list(self, page, sort_field, sort_desc, search, filters, execute=True):
if sort_field:
sort_field = self._sortable_columns.get(sort_field)[0]
return super(CustomModelView, self).get_list(page, sort_field, sort_desc, search, filters, execute)
admin.add_view(CustomModelView(YourModel))
Multiple sort from admin interface as it is in Django admin ?