Как группировать по И объединяться с Джанго

У меня довольно простой запрос, который я хотел бы сделать через ORM, но не могу понять это ...

У меня есть три модели:

Местоположение (место), Атрибут (атрибут, который может иметь место) и Рейтинг (модель M2M «сквозная», которая также содержит поле оценки)

Я хочу выбрать некоторые важные атрибуты и иметь возможность ранжировать свои местоположения по этим атрибутам, то есть более высокий общий балл по всем выбранным атрибутам = лучше.

Я могу использовать следующий SQL, чтобы получить то, что я хочу:

select location_id, sum(score) 
    from locations_rating 
    where attribute_id in (1,2,3) 
    group by location_id order by sum desc;

который возвращается

 location_id | sum 
-------------+-----
          21 |  12
           3 |  11

Самое близкое, что я могу получить с ORM:

Rating.objects.filter(
    attribute__in=attributes).annotate(
    acount=Count('location')).aggregate(Sum('score'))

Который возвращается

{'score__sum': 23}

т.е. сумма всех, не сгруппированных по местоположению.

Есть ли способ обойти это? Я мог бы выполнить SQL вручную, но предпочел бы использовать ORM, чтобы все было согласованно.

Спасибо

Ответы на вопрос(2)

Ваш ответ на вопрос