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’)))# 发表文章模型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 就是多对多的,没发现楼主说的问题。
相关文章:
1. python - Pycharm调试代码进行列表遍历时,如何直接赋值指定元素2. 安装mysql,完成时提示的是用户名root,在终端查看版本时显示的不是root,请问这怎么解决3. python - pig latin问题 总是出现list/string index out of range4. html5 - 为什么浏览器可以显示HTML文档中未被定义的标签?5. python - 如何解决程序运行太久之后被操作系统暂停的情况?6. mysql - 5w条数据的批量更新的sql7. 为什么HTML5规范中会包含一些和html无关的东西?如本地存储等。8. css3 - canvas在IOS8中不兼容。画不出来。9. javascript - sublime已经安装了babel插件和sublimelinter-jshint为什么还是显示es6语法错误?10. 闯关的第二个问题的答案是错的吧?

网公网安备