Flask SQLAlchemy分页错误

时间:2013-08-27 14:54:06

标签: python pagination flask flask-sqlalchemy

我有这个代码和all()方法以及其他所有方法都可以解决这个问题,而且我已经查看了所有方法,paginate()方法BaseQuery也适用于Query {1}}

@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' 我到处寻找,我找不到任何解决办法。

1 个答案:

答案 0 :(得分:19)

从你的问题......

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(...)