Flask炼金术分页

2024-05-20 05:47:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这段代码和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' 我到处找了找,找不到解决办法。


Tags: 方法代码appdbindexdefpageblog
1条回答
网友
1楼 · 发布于 2024-05-20 05:47:24

从你的问题。。。

that the method paginate() works on BaseQuery which is also Query

我想这就是你困惑的地方。”Query“引用SQLAlchemy^{}对象BaseQuery“是指Flask SQLALchemy^{}对象,它是Query的一个子类。这个子类包括助手,如^{}^{}。但是,这意味着Query对象没有paginate()函数。如何实际构建调用“Query”对象的对象取决于您处理的是Query对象还是BaseQuery对象。

在这段代码中,您将获得SQLAlchemyQuery对象,这将导致错误:

db.session.query(models.Post).paginate(...)

如果使用下面的代码,您将得到您要查找的分页,因为您处理的是BaseQuery对象(来自Flask SQLAlchemy),而不是Query对象(来自SQLAlchemy)。

models.Post.query.paginate(...)

相关问题 更多 >