Commit b5edc553 authored by PJ Janse van Rensburg's avatar PJ Janse van Rensburg

Add CSV & XLS export to SQLAlchemy example app.

parent 108cbd75
...@@ -33,6 +33,9 @@ class User(db.Model): ...@@ -33,6 +33,9 @@ class User(db.Model):
def __str__(self): def __str__(self):
return "{}, {}".format(self.last_name, self.first_name) return "{}, {}".format(self.last_name, self.first_name)
def __repr__(self):
return "{}: {}".format(self.id, self.__str__())
# Create M2M table # Create M2M table
post_tags_table = db.Table('post_tags', db.Model.metadata, post_tags_table = db.Table('post_tags', db.Model.metadata,
...@@ -107,9 +110,10 @@ class UserAdmin(sqla.ModelView): ...@@ -107,9 +110,10 @@ class UserAdmin(sqla.ModelView):
# Customized Post model admin # Customized Post model admin
class PostAdmin(sqla.ModelView): class PostAdmin(sqla.ModelView):
column_exclude_list = ['text'] column_list = ['id', 'user', 'title', 'date', 'tags']
column_default_sort = ('date', True) column_default_sort = ('date', True)
column_sortable_list = [ column_sortable_list = [
'id',
'title', 'title',
'date', 'date',
('user', ('user.last_name', 'user.first_name')), # sort on multiple columns ('user', ('user.last_name', 'user.first_name')), # sort on multiple columns
...@@ -128,6 +132,9 @@ class PostAdmin(sqla.ModelView): ...@@ -128,6 +132,9 @@ class PostAdmin(sqla.ModelView):
'tags', 'tags',
filters.FilterLike(Post.title, 'Fixed Title', options=(('test1', 'Test 1'), ('test2', 'Test 2'))), filters.FilterLike(Post.title, 'Fixed Title', options=(('test1', 'Test 1'), ('test2', 'Test 2'))),
] ]
can_export = True
export_max_rows = 1000
export_types = ['csv', 'xls']
# Pass arguments to WTForms. In this case, change label for text field to # Pass arguments to WTForms. In this case, change label for text field to
# be 'Big Text' and add required() validator. # be 'Big Text' and add required() validator.
......
Flask Flask
Flask-Admin Flask-Admin
Flask-SQLAlchemy Flask-SQLAlchemy
tablib
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment