diff --git a/sqlalchemy_utils/functions/sort_query.py b/sqlalchemy_utils/functions/sort_query.py index ca4d12d..b999ad2 100644 --- a/sqlalchemy_utils/functions/sort_query.py +++ b/sqlalchemy_utils/functions/sort_query.py @@ -101,57 +101,66 @@ def sort_query(query, *args, **kwargs): :: - >>> import sqlalchemy as sa - >>> from sqlalchemy import create_engine - >>> from sqlalchemy.orm import sessionmaker - >>> from sqlalchemy.ext.declarative import declarative_base - >>> from sqlalchemy_utils import sort_query - >>> - >>> - >>> engine = create_engine( - ... 'sqlite:///' - ... ) - >>> Base = declarative_base() - >>> Session = sessionmaker(bind=engine) - >>> session = Session() - >>> - >>> class Category(Base): - ... __tablename__ = 'category' - ... id = sa.Column(sa.Integer, primary_key=True) - ... name = sa.Column(sa.Unicode(255)) - >>> - >>> class Article(Base): - ... __tablename__ = 'article' - ... id = sa.Column(sa.Integer, primary_key=True) - ... name = sa.Column(sa.Unicode(255)) - ... category_id = sa.Column(sa.Integer, sa.ForeignKey(Category.id)) - ... - ... category = sa.orm.relationship( - ... Category, primaryjoin=category_id == Category.id - ... ) + import sqlalchemy as sa + from sqlalchemy import create_engine + from sqlalchemy.orm import sessionmaker + from sqlalchemy.ext.declarative import declarative_base + from sqlalchemy_utils import sort_query + + + engine = create_engine( + 'sqlite:///' + ) + Base = declarative_base() + Session = sessionmaker(bind=engine) + session = Session() + + class Category(Base): + __tablename__ = 'category' + id = sa.Column(sa.Integer, primary_key=True) + name = sa.Column(sa.Unicode(255)) + + class Article(Base): + __tablename__ = 'article' + id = sa.Column(sa.Integer, primary_key=True) + name = sa.Column(sa.Unicode(255)) + category_id = sa.Column(sa.Integer, sa.ForeignKey(Category.id)) + + category = sa.orm.relationship( + Category, primaryjoin=category_id == Category.id + ) 1. Applying simple ascending sort + :: + + + query = session.query(Article) + query = sort_query(query, 'name') - >>> query = session.query(Article) - >>> query = sort_query(query, 'name') 2. Appying descending sort + :: - >>> query = sort_query(query, '-name') + + query = sort_query(query, '-name') 3. Applying sort to custom calculated label + :: - >>> query = session.query( - ... Category, sa.func.count(Article.id).label('articles') - ... ) - >>> query = sort_query(query, 'articles') + + query = session.query( + Category, sa.func.count(Article.id).label('articles') + ) + query = sort_query(query, 'articles') 4. Applying sort to joined table column + :: - >>> query = session.query(Article).join(Article.category) - >>> query = sort_query(query, 'category-name') + + query = session.query(Article).join(Article.category) + query = sort_query(query, 'category-name') :param query: