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')