2013-08-27 17 views
6

私は他のすべてのメソッドは、この上で動作し、このコードとall()方法とがあると私はすべての上を見ていると私ができることもQueryフラスコSQLAlchemyのページネーションエラー

@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) 

あるBaseQuery上で動作しますpaginate()方法が、これは私にエラーを与えるAttributeError: 'Query' object has no attribute 'paginate' 私はどこでも見てきましたが、私はこれに対する解決策を見つけることができません。私はあなたが混同されている場所、これがあると思い、あなたの質問...

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

から

答えて

18

。 「クエリ」はSQLAlchemy Queryオブジェクトを指します。 "BaseQuery"はFlask-SQLALchemy BaseQueryオブジェクトを指し、Queryのサブクラスです。このサブクラスには、first_or_404()paginate()などのヘルパーが含まれます。ただし、Queryオブジェクトにはpaginate()機能がありません。 "Query"オブジェクトを呼び出すオブジェクトを実際にどのように構築するかは、QueryまたはBaseQueryオブジェクトのどちらを扱っているかによって異なります。次のコードを使用している場合は、扱っているので、あなたは、あなたが探しているページネーションを取得

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

:このコードで

、あなたはエラーになりSQLAlchemyのQueryオブジェクトを取得していますBaseQueryオブジェクト(Flask-SQLAlchemyから)Queryオブジェクト(SQLAlchemyから)ではなく。

models.Post.query.paginate(...) 
+1

ありがとうございました!私は本当に2つの間で混乱していた。これは私のためにそれをクリア:) – adarsh

関連する問題