Flask SQLAlchemy pagination error

后端 未结 1 1306

I have this code and the all() method and every other method works on this and I have looked all over and I could that the method paginate() works

1条回答
  •  迷失自我
    2021-01-05 06:06

    From your question...

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

    I think this is where you're being confused. "Query" refers to the SQLAlchemy Query object. "BaseQuery" refers to the Flask-SQLALchemy BaseQuery object, which is a subclass of Query. This subclass includes helpers such as first_or_404() and paginate(). However, this means that a Query object does NOT have the paginate() function. How you actually build the object you are calling your "Query" object depends on whether you are dealing with a Query or BaseQuery object.

    In this code, you are getting the SQLAlchemy Query object, which results in an error:

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

    If you use the following code, you get the pagination you're looking for, because you are dealing with a BaseQuery object (from Flask-SQLAlchemy) rather than a Query object (from SQLAlchemy).

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

    0 讨论(0)
提交回复
热议问题