python - flask sqlalchemy 多對多查詢的結果如何進行分頁?
問題描述
學習flask中正在用flask做一個博客,(一篇文章可以有多個標簽,一個標簽可以對應多個文章,所以我這里按照網上的采用了many to many的關系),flask-sqlalchemy自帶的paginate方法只能支持flask_sqlalchemy.BaseQuery的對象進行分頁,但是我在多對對關系中用標簽找出所有已關聯該標簽的文章對象是一個list,所以就不能分頁。。。我現在想做分頁是要怎么辦?
我現在是要自己寫一個分頁嗎?如果寫大概是什么思路希望好心的大牛指點一下。例子:
#多對多關系中的兩個表之間的一個關聯表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’) # 關聯評論 tags = db.relationship(’Tag’,secondary=tags,backref=db.backref(’posts’,lazy=’dynamic’))#多對多關聯 def __repr__(self):return '<post_id={0}>'.format(self.id)#標簽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 就是多對多的,沒發(fā)現樓主說的問題。
相關文章:
1. javascript - JS設置Video視頻對象的currentTime時出現了問題,IE,Edge,火狐,都可以設置,反而chrom卻...2. java固定鍵值轉換,使用枚舉實現字典?3. 如何為每個應用程序配置tomcat 6的logs / catalina.out。(為sys.out,sys.err配置Web應用程序特定的日志文件)4. css - ionic中的柵格布局如何讓文字內容多少不同的每一列中的內容都能垂直居中?5. php自學從哪里開始?6. phpstady在win10上運行7. java - 我設置了cookie的max age,但是cookie依然在關閉游覽器后消失了8. vim - win10無法打開markdown編輯器9. 這是什么情況???10. javascript - 用jsonp抓取qq音樂總是說回調函數沒有定義
