Flask SQLAlchemy分页错误
我有这样的代码和all()
方法,并在此所有其他方法作品和我都找过我所能,该方法paginate()
适用于BaseQuery
这也是Query
@app.route('/')@app.route('/index')
@app.route('/blog')
@app.route('/index/<int:page>')
def index(page = 1):
posts = db.session.query(models.Post).paginate(page, RESULTS_PER_PAGE, False)
return render_template('index.html', title="Home", posts=posts)
但这给了我AttributeError: 'Query' object has no attribute 'paginate'
到处都是的错误,我找不到任何解决方案。
回答:
从你的问题…
that the method paginate() works on BaseQuery which is also Query
我认为这是你感到困惑的地方。“查询”是指SQLAlchemy Query
对象。“ BaseQuery”
是指Flask-SQLALchemy BaseQuery
对象,它是的子类Query
。此子类包括诸如first_or_404()
和的帮助器paginate()
。但是,这意味着Query对象不具有该paginate()
功能。实际构建对象的方式称为“查询”对象,这取决于你处理的是Query
还是BaseQuery
对象。
在此代码中,你将获得SQLAlchemy Query
对象,该对象将导致错误:
db.session.query(models.Post).paginate(...)
如果使用以下代码,则会得到所需的分页,因为你正在处理的是BaseQuery对象(来自Flask-SQLAlchemy)而不是Query对象(来自SQLAlchemy)。
models.Post.query.paginate(...)
以上是 Flask SQLAlchemy分页错误 的全部内容, 来源链接: utcz.com/qa/426861.html