タグモデルがあるとします:
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 のタグが表示されないことです。