Вы можете сортировать свои объекты с помощью Javascript или сортировать свои объекты на сервере.
Javascript ограничивает, потому что в случае большого количества разбитых на страницы объектов вы сможете сортировать только то, что находится на текущей странице.
Самый простой способ - отсортировать записи на стороне сервера и позволить пользователю выбрать сортировку с помощью параметров GET;что-то вроде
http://mydomain.com/path/to/view/?sort=asc
Тогда, на ваш взгляд (это очень грубо и не должно быть так, как вы его реализуете):
def myview(request):
...
# Check if the user has provided a 'sort' parameter, and check what it is
if request.GET.get("sort", None) is "asc":
results = SomeModel.objects.get(...).order_by("-name")
...
Вы можете применить ту же логику для фильтрации, хотя (по моему мнению), если вы собираетесь изменять фактический набор запросов (возвращаемые объекты), фильтрация должна осуществляться через URL, а не через параметры GET (которые влияют только на порядок, в котором возвращаются результаты)