假设我有一个标签模型:
class tag(db.Model):
id = db.Column(db.Integer, primary_key = True)
name = db.Column(db.String(240))
def FollowerRanked(self):
#return query(followers, func.count(followers.c.tag_id)).outerjoin(Tag)??
#return Tag.query.Join(followers, (followers.c.tag_id == self.id).count()??
#I am not sure how
假设我也有订阅表关系。
followers = db.Table('followers',
db.Column('follower_id', db.Integer, db.ForeignKey('user.id')),
db.Column('tag_id', db.Integer, db.ForeignKey('tag.id'))
)
我想按 DESC 顺序遍历标签...以获取每个标签的关注者数量。我想我需要一个 group_by 某处。
我希望能够循环:
tags.FollowersRanked().items
我该怎么做呢?
编辑:
显然,这在模型中变得难以做到,所以我试图在视图中做到这一点:
tags = db.session.query(models.Tag, \
func.count(models.followers.c.follower_id).label('total'), models.Tag.name, \
models.Tag.title).join(models.followers).group_by(models.Tag).order_by('total DESC')
p = Pagination(tags, page, POSTS_PER_PAGE, tags.count(), tags)
唯一的问题是,它不显示 0 个订阅者的标签。