MareksNo
MareksNo

Reputation: 150

Pagination with filters using Flask-Sqlalchemy

I am trying to setup pagination for one of my views, but the results are filtered, I am wondering how I could do something like this.

products_product_name = Product.query.filter(Product.product_name.contains(search_name)).paginate(1, 20)

Upvotes: 0

Views: 7711

Answers (2)

thyago garcia
thyago garcia

Reputation: 53

You can do it:

model.query.filter_by(id=1).paginate(page=1, per_page=2)

Upvotes: 5

ionheart
ionheart

Reputation: 311

You can add some filtering logic similar to these:

if args["seen"]:
    query = query.filter(Product.seen == args["seen"])
if args["starred"]:
    query = query.filter(Product.starred == args["starred"])

# Descending sort by the field specified
if args["sort"].startswith("-"):
    field = args["sort"].replace("-", "")
    sort_by = getattr(Product, field).desc()
else:
    sort_by = getattr(Product, args["sort"]).asc()
query = query.order_by(sort_by).paginate(
    page=args["page"], per_page=args["per_page"]

Upvotes: 0

Related Questions