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: service.ratings.all().count(), reverse=True)
正如你所看到的这是一个三步过程,我对此感觉不太对。任何人都知道更好的方法来做到这一点?
答
如何:
service_list = Service.objects.annotate(ratings_num=Count('ratings')).filter(ratings_num__gt=0).order_by('-ratings_num')
甜蜜!谢谢!!! – Marconi 2010-04-12 04:57:16
+1 this is awsome .... thnks – suhailvs 2013-10-24 12:04:57