Джанго сортирует по многим многим отношениям - PullRequest
0 голосов
/ 11 апреля 2010

У меня есть следующая модель:

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)

Как вы можете видеть, это трехэтапный процесс, и я не прав в этом. Кто-нибудь знает лучший способ сделать это?

1 Ответ

3 голосов
/ 11 апреля 2010

Как насчет:

    service_list = Service.objects.annotate(ratings_num=Count('ratings')).filter(ratings_num__gt=0).order_by('-ratings_num')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...