我想用flask框架制作排行榜。我有用户和奖牌模型以及多对多关系表。我想展示获得最多奖牌的前十名用户,我想知道是否有一种“轻松”的查询方式。相关代码如下:
用户模型:
class User(UserMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(64), index=True, unique=True)
medals = db.relationship('Medal', secondary=medals_users, backref='user')
奖章模型:
class Medal(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64))
关系表:
medals_users = db.Table('medals_users',
db.Column('user_id', db.Integer, db.ForeignKey('user.id'), nullable=False),
db.Column('medal_id', db.Integer, db.ForeignKey('medal.id'), nullable=False),
db.PrimaryKeyConstraint('user_id', 'medal_id'))
我当时认为解决方案应属于以下方面:
top = User.query.filter_by(User.medal.count()).order_by(User.medal.count()).limit(10).all()
但是似乎我迷路了,任何帮助将不胜感激