Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
F
flask-admin
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Python-Dev
flask-admin
Commits
a837d804
Commit
a837d804
authored
Oct 08, 2018
by
PJ Janse van Rensburg
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update sqla example
parent
0da38c88
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
36 additions
and
28 deletions
+36
-28
app.py
examples/sqla/app.py
+36
-28
No files found.
examples/sqla/app.py
View file @
a837d804
...
@@ -28,11 +28,10 @@ class User(db.Model):
...
@@ -28,11 +28,10 @@ class User(db.Model):
id
=
db
.
Column
(
db
.
Integer
,
primary_key
=
True
)
id
=
db
.
Column
(
db
.
Integer
,
primary_key
=
True
)
first_name
=
db
.
Column
(
db
.
String
(
100
))
first_name
=
db
.
Column
(
db
.
String
(
100
))
last_name
=
db
.
Column
(
db
.
String
(
100
))
last_name
=
db
.
Column
(
db
.
String
(
100
))
username
=
db
.
Column
(
db
.
String
(
80
),
unique
=
True
)
email
=
db
.
Column
(
db
.
String
(
120
),
unique
=
True
)
email
=
db
.
Column
(
db
.
String
(
120
),
unique
=
True
)
def
__str__
(
self
):
def
__str__
(
self
):
return
self
.
username
return
"{} {}"
.
format
(
self
.
first_name
,
self
.
last_name
)
# Create M2M table
# Create M2M table
...
@@ -54,7 +53,7 @@ class Post(db.Model):
...
@@ -54,7 +53,7 @@ class Post(db.Model):
tags
=
db
.
relationship
(
'Tag'
,
secondary
=
post_tags_table
)
tags
=
db
.
relationship
(
'Tag'
,
secondary
=
post_tags_table
)
def
__str__
(
self
):
def
__str__
(
self
):
return
self
.
title
return
"{}"
.
format
(
self
.
title
)
class
Tag
(
db
.
Model
):
class
Tag
(
db
.
Model
):
...
@@ -62,7 +61,7 @@ class Tag(db.Model):
...
@@ -62,7 +61,7 @@ class Tag(db.Model):
name
=
db
.
Column
(
db
.
Unicode
(
64
))
name
=
db
.
Column
(
db
.
Unicode
(
64
))
def
__str__
(
self
):
def
__str__
(
self
):
return
self
.
name
return
"{}"
.
format
(
self
.
name
)
class
UserInfo
(
db
.
Model
):
class
UserInfo
(
db
.
Model
):
...
@@ -75,7 +74,7 @@ class UserInfo(db.Model):
...
@@ -75,7 +74,7 @@ class UserInfo(db.Model):
user
=
db
.
relationship
(
User
,
backref
=
'info'
)
user
=
db
.
relationship
(
User
,
backref
=
'info'
)
def
__str__
(
self
):
def
__str__
(
self
):
return
'
%
s -
%
s'
%
(
self
.
key
,
self
.
value
)
return
"{} - {}"
.
format
(
self
.
key
,
self
.
value
)
class
Tree
(
db
.
Model
):
class
Tree
(
db
.
Model
):
...
@@ -85,7 +84,7 @@ class Tree(db.Model):
...
@@ -85,7 +84,7 @@ class Tree(db.Model):
parent
=
db
.
relationship
(
'Tree'
,
remote_side
=
[
id
],
backref
=
'children'
)
parent
=
db
.
relationship
(
'Tree'
,
remote_side
=
[
id
],
backref
=
'children'
)
def
__str__
(
self
):
def
__str__
(
self
):
return
self
.
name
return
"{}"
.
format
(
self
.
name
)
# Flask views
# Flask views
...
@@ -96,28 +95,38 @@ def index():
...
@@ -96,28 +95,38 @@ def index():
# Customized User model admin
# Customized User model admin
class
UserAdmin
(
sqla
.
ModelView
):
class
UserAdmin
(
sqla
.
ModelView
):
column_list
=
[
'id'
,
'last_name'
,
'first_name'
,
'email'
,
]
column_default_sort
=
[(
'last_name'
,
False
),
(
'first_name'
,
False
)]
# sort on multiple columns
inline_models
=
(
UserInfo
,)
inline_models
=
(
UserInfo
,)
# Customized Post model admin
# Customized Post model admin
class
PostAdmin
(
sqla
.
ModelView
):
class
PostAdmin
(
sqla
.
ModelView
):
# Visible columns in the list view
column_exclude_list
=
[
'text'
]
column_exclude_list
=
[
'text'
]
column_sortable_list
=
[
# List of columns that can be sorted. For 'user' column, use User.username as
'title'
,
# a column.
'date'
,
column_sortable_list
=
(
'title'
,
(
'user'
,
'user.username'
),
'date'
)
(
'user'
,
(
'user.last_name'
,
'user.first_name'
)),
# sort on multiple columns
]
# Rename 'title' columns to 'Post Title' in list view
column_labels
=
dict
(
title
=
'Post Title'
)
# Rename 'title' column in list view
column_labels
=
dict
(
title
=
'Post Title'
)
column_searchable_list
=
[
'title'
,
column_searchable_list
=
(
'title'
,
User
.
username
,
'tags.name'
)
User
.
first_name
,
User
.
last_name
,
column_filters
=
(
'user'
,
'tags.name'
,
'title'
,
]
'date'
,
column_filters
=
[
'tags'
,
'user'
,
filters
.
FilterLike
(
Post
.
title
,
'Fixed Title'
,
options
=
((
'test1'
,
'Test 1'
),
(
'test2'
,
'Test 2'
))))
'title'
,
'date'
,
'tags'
,
filters
.
FilterLike
(
Post
.
title
,
'Fixed Title'
,
options
=
((
'test1'
,
'Test 1'
),
(
'test2'
,
'Test 2'
))),
]
# 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.
...
@@ -127,11 +136,11 @@ class PostAdmin(sqla.ModelView):
...
@@ -127,11 +136,11 @@ class PostAdmin(sqla.ModelView):
form_ajax_refs
=
{
form_ajax_refs
=
{
'user'
:
{
'user'
:
{
'fields'
:
(
User
.
username
,
User
.
email
)
'fields'
:
(
User
.
first_name
,
User
.
last_name
)
},
},
'tags'
:
{
'tags'
:
{
'fields'
:
(
Tag
.
name
,),
'fields'
:
(
Tag
.
name
,),
'minimum_input_length'
:
0
,
'minimum_input_length'
:
0
,
# show suggestions, even before any user input
'placeholder'
:
'Please select'
,
'placeholder'
:
'Please select'
,
'page_size'
:
5
,
'page_size'
:
5
,
},
},
...
@@ -174,8 +183,8 @@ def build_sample_db():
...
@@ -174,8 +183,8 @@ def build_sample_db():
'Riley'
,
'William'
,
'James'
,
'Geoffrey'
,
'Lisa'
,
'Benjamin'
,
'Stacey'
,
'Lucy'
'Riley'
,
'William'
,
'James'
,
'Geoffrey'
,
'Lisa'
,
'Benjamin'
,
'Stacey'
,
'Lucy'
]
]
last_names
=
[
last_names
=
[
'Brown'
,
'
Smith
'
,
'Patel'
,
'Jones'
,
'Williams'
,
'Johnson'
,
'Taylor'
,
'Thomas'
,
'Brown'
,
'
Brown
'
,
'Patel'
,
'Jones'
,
'Williams'
,
'Johnson'
,
'Taylor'
,
'Thomas'
,
'Roberts'
,
'Khan'
,
'
Lewis'
,
'Jackson
'
,
'Clarke'
,
'James'
,
'Phillips'
,
'Wilson'
,
'Roberts'
,
'Khan'
,
'
Clarke'
,
'Clarke
'
,
'Clarke'
,
'James'
,
'Phillips'
,
'Wilson'
,
'Ali'
,
'Mason'
,
'Mitchell'
,
'Rose'
,
'Davis'
,
'Davies'
,
'Rodriguez'
,
'Cox'
,
'Alexander'
'Ali'
,
'Mason'
,
'Mitchell'
,
'Rose'
,
'Davis'
,
'Davies'
,
'Rodriguez'
,
'Cox'
,
'Alexander'
]
]
...
@@ -183,9 +192,8 @@ def build_sample_db():
...
@@ -183,9 +192,8 @@ def build_sample_db():
for
i
in
range
(
len
(
first_names
)):
for
i
in
range
(
len
(
first_names
)):
user
=
User
()
user
=
User
()
user
.
first_name
=
first_names
[
i
]
user
.
first_name
=
first_names
[
i
]
user
.
username
=
first_names
[
i
]
.
lower
()
user
.
last_name
=
last_names
[
i
]
user
.
last_name
=
last_names
[
i
]
user
.
email
=
user
.
username
+
"@example.com"
user
.
email
=
user
.
first_names
[
i
]
.
lower
()
+
"@example.com"
user_list
.
append
(
user
)
user_list
.
append
(
user
)
db
.
session
.
add
(
user
)
db
.
session
.
add
(
user
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment