【问题标题】:Flask SQLAlchemy pagination errorFlask SQLAlchemy 分页错误
【发布时间】:2013-08-30 09:42:12
【问题描述】:

我有这个代码和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' 我到处寻找,但找不到任何解决方案。

【问题讨论】:

    标签: python pagination flask flask-sqlalchemy


    【解决方案1】:

    从你的问题...

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

    【讨论】:

    • 感谢这工作!我确实在两者之间感到困惑。这为我清除了它:)
    猜你喜欢
    • 2017-08-23
    • 1970-01-01
    • 2016-02-03
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2015-02-20
    相关资源
    最近更新 更多