python - flask sqlalchemy 多對(duì)多查詢的結(jié)果如何進(jìn)行分頁?
問題描述
學(xué)習(xí)flask中正在用flask做一個(gè)博客,(一篇文章可以有多個(gè)標(biāo)簽,一個(gè)標(biāo)簽可以對(duì)應(yīng)多個(gè)文章,所以我這里按照網(wǎng)上的采用了many to many的關(guān)系),flask-sqlalchemy自帶的paginate方法只能支持flask_sqlalchemy.BaseQuery的對(duì)象進(jìn)行分頁,但是我在多對(duì)對(duì)關(guān)系中用標(biāo)簽找出所有已關(guān)聯(lián)該標(biāo)簽的文章對(duì)象是一個(gè)list,所以就不能分頁。。。我現(xiàn)在想做分頁是要怎么辦?
我現(xiàn)在是要自己寫一個(gè)分頁嗎?如果寫大概是什么思路希望好心的大牛指點(diǎn)一下。例子:
#多對(duì)多關(guān)系中的兩個(gè)表之間的一個(gè)關(guān)聯(lián)表tags = db.Table(’post_tags’, db.Column(’post_id’,db.Integer,db.ForeignKey(’posts.id’)), db.Column(’tag_id’,db.Integer,db.ForeignKey(’tag.id’)))# 發(fā)表文章模型class Post(db.Model): __tablename__ = ’posts’ id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(255)) body = db.Column(db.Text()) body_html = db.Column(db.Text()) created = db.Column(db.DateTime) author_id = db.Column(db.Integer, db.ForeignKey(’users.id’)) comments = db.relationship(’Comment’, backref=’post’,lazy=’dynamic’) # 關(guān)聯(lián)評(píng)論 tags = db.relationship(’Tag’,secondary=tags,backref=db.backref(’posts’,lazy=’dynamic’))#多對(duì)多關(guān)聯(lián) def __repr__(self):return '<post_id={0}>'.format(self.id)#標(biāo)簽class Tag(db.Model): __tablename__ = ’tag’ id = db.Column(db.Integer,primary_key=True) title = db.Column(db.String(255)) def __repr__(self):return '{0}'.format(self.title)
問題解答
回答1:我表示分頁無壓力啊 完全可以用分頁啊
>>> r=Role.query.get(1)>>> rmanager>>> r.users<sqlalchemy.orm.dynamic.AppenderBaseQuery object at 0x7f5ae257a510>>>> r.users.paginate(1, 20, None)<flask_sqlalchemy.Pagination object at 0x7f5ae1829150>
User 和 Role 就是多對(duì)多的,沒發(fā)現(xiàn)樓主說的問題。
相關(guān)文章:
1. docker images顯示的鏡像過多,狗眼被亮瞎了,怎么辦?2. 大家好,請(qǐng)問在python腳本中怎么用virtualenv激活指定的環(huán)境?3. 網(wǎng)頁爬蟲 - 用Python3的requests庫模擬登陸B(tài)ilibili總是提示驗(yàn)證碼錯(cuò)誤怎么辦?4. javascript - 關(guān)于audio標(biāo)簽暫停的問題5. android - QQ物聯(lián),視頻通話6. Matlab和Python編程相似嗎,有兩種都學(xué)過的人可以說說嗎7. javascript - 微信小程序封裝定位問題(封裝異步并可能多次請(qǐng)求)8. javascript - Web微信聊天輸入框解決方案9. mysql - 怎么讓 SELECT 1+null 等于 110. 請(qǐng)教各位大佬,瀏覽器點(diǎn) 提交實(shí)例為什么沒有反應(yīng)
