如何根据下拉框选择更改 Flask-SQLAlchemy 中的 order_by 子句?
How to change order_by clause in Flask-SQLAlchemy based on dropdown box selection?
我想让我网站上的用户能够更改从我的数据库中的查询获得的结果的顺序(例如按字母顺序升序、字母顺序降序或通过其他参数)。
这是我要执行 order_by 的查询:
def get_curators_and_total_followers():
total_playlist_followers = db.session.query(SpotifyPlaylist.curator_id.label('user_id'), db.func.sum(SpotifyPlaylist.playlist_follower_count).label("total_followers"))\
.outerjoin(User, SpotifyPlaylist.curator_id==User.id)\
.group_by(User.id)\
.subquery()
curators = db.session.query(User, total_playlist_followers.c.total_followers)\
.outerjoin(total_playlist_followers, User.id==total_playlist_followers.c.user_id)\
.join(SpotifyPlaylist, SpotifyPlaylist.curator_id==User.id)\
.order_by("This is where I want to change the fields")
return curators
我如何设置一个默认值以便加载页面,然后让用户可以根据具有几个不同 order_by 选项的下拉框以不同方式显示结果?
def get_curators_and_total_followers():
total_playlist_followers = db.session.query(SpotifyPlaylist.curator_id.label('user_id'), db.func.sum(SpotifyPlaylist.playlist_follower_count).label("total_followers"))\
.outerjoin(User, SpotifyPlaylist.curator_id==User.id)\
.group_by(User.id)\
.subquery()
curators = db.session.query(User, total_playlist_followers.c.total_followers)\
.outerjoin(total_playlist_followers, User.id==total_playlist_followers.c.user_id)\
.join(SpotifyPlaylist, SpotifyPlaylist.curator_id==User.id)\
order_by = form.get('orderBy')
if order_by is None:
curators.order_by("your default value")
else:
curators.order_by(order_by)
return curators
我想让我网站上的用户能够更改从我的数据库中的查询获得的结果的顺序(例如按字母顺序升序、字母顺序降序或通过其他参数)。
这是我要执行 order_by 的查询:
def get_curators_and_total_followers():
total_playlist_followers = db.session.query(SpotifyPlaylist.curator_id.label('user_id'), db.func.sum(SpotifyPlaylist.playlist_follower_count).label("total_followers"))\
.outerjoin(User, SpotifyPlaylist.curator_id==User.id)\
.group_by(User.id)\
.subquery()
curators = db.session.query(User, total_playlist_followers.c.total_followers)\
.outerjoin(total_playlist_followers, User.id==total_playlist_followers.c.user_id)\
.join(SpotifyPlaylist, SpotifyPlaylist.curator_id==User.id)\
.order_by("This is where I want to change the fields")
return curators
我如何设置一个默认值以便加载页面,然后让用户可以根据具有几个不同 order_by 选项的下拉框以不同方式显示结果?
def get_curators_and_total_followers():
total_playlist_followers = db.session.query(SpotifyPlaylist.curator_id.label('user_id'), db.func.sum(SpotifyPlaylist.playlist_follower_count).label("total_followers"))\
.outerjoin(User, SpotifyPlaylist.curator_id==User.id)\
.group_by(User.id)\
.subquery()
curators = db.session.query(User, total_playlist_followers.c.total_followers)\
.outerjoin(total_playlist_followers, User.id==total_playlist_followers.c.user_id)\
.join(SpotifyPlaylist, SpotifyPlaylist.curator_id==User.id)\
order_by = form.get('orderBy')
if order_by is None:
curators.order_by("your default value")
else:
curators.order_by(order_by)
return curators