django按多个关系排序

django按多个关系排序,django,Django,我有以下型号: class Service(models.Model): ratings = models.ManyToManyField(User) 现在,如果我想让所有服务的评分按降序排序,我做了一些事情: services_list = Service.objects.filter(ratings__gt=0).distinct() services_list = list(services_list) services_list.sort(key=lambda service:

我有以下型号:

class Service(models.Model):
    ratings = models.ManyToManyField(User)
现在,如果我想让所有服务的评分按降序排序,我做了一些事情:

services_list = Service.objects.filter(ratings__gt=0).distinct()
services_list = list(services_list)
services_list.sort(key=lambda service: service.ratings.all().count(), reverse=True)
正如你所看到的,这是一个三步走的过程,我觉得这不对。有谁知道更好的方法吗?

那么:

from django.db.models import Count
service_list = Service.objects.annotate(ratings_num=Count('ratings')).filter(ratings_num__gt=0).order_by('-ratings_num')
那么:

from django.db.models import Count
service_list = Service.objects.annotate(ratings_num=Count('ratings')).filter(ratings_num__gt=0).order_by('-ratings_num')