diff --git a/sqlalchemy_utils/functions/sort_query.py b/sqlalchemy_utils/functions/sort_query.py index 650180d..5af1ed9 100644 --- a/sqlalchemy_utils/functions/sort_query.py +++ b/sqlalchemy_utils/functions/sort_query.py @@ -71,7 +71,9 @@ class QuerySorter(object): # Check hybrid properties. if hasattr(entity, sort['attr']): - return self.query.order_by(getattr(entity, sort['attr'])) + return self.query.order_by( + sort['func'](getattr(entity, sort['attr'])) + ) return self.query diff --git a/tests/test_sort_query.py b/tests/test_sort_query.py index cbc87c1..31a83c4 100644 --- a/tests/test_sort_query.py +++ b/tests/test_sort_query.py @@ -98,3 +98,11 @@ class TestSortQuery(TestCase): query = self.session.query(self.Category) query = sort_query(query, 'articles_count') assert 'ORDER BY (SELECT count(article.id) AS count_1' in str(query) + + def test_sort_by_hybrid_property_descending(self): + query = self.session.query(self.Category) + query = sort_query(query, '-articles_count') + assert ( + 'ORDER BY (SELECT count(article.id) AS count_1' + ) in str(query) + assert ' DESC' in str(query)