Order by model method result

This is correct.

Yes, you can annotate the queryset with the count. See the docs at Aggregation | Django documentation | Django for more details and examples. (You’ll find an example that matches your requirement almost exactly.)