Самый простой способ - это не считать количество для каждого юзера каждый раз, а при создании/удалении юзером своей записи один раз считать количество его записей и обновлять его значение в поле в таблице пользователей. То есть в таблице с пользователями у тебя будет поле posts_count, в котором будет храниться количество постов юзера) - и просто по нему делай сортировку. Это и проще, и быстрее работать будет.
А если делать через метод get_posts_count, то для отображения списка пользователей с количеством их постов на странице, у тебя к базе будет сделано N запросов для подсчета количества, где N - это число пользователей которые будут отображены на странице, что совсем не оптимально.
Но если уж хочется не делать отдельное поле и считать количество одним запросом вместе с выборкой юзеров, то можно через annotate (взял из доки):
>>> from django.db.models import Count
>>> q = Book.objects.annotate(Count('authors'))
# Interrogate the first object in the queryset
>>> q[0]
<Book: The Definitive Guide to Django>
>>> q[0].authors__count
2