Я не уверен, в каких терминах вы запрашиваете параметры запроса.
Предполагается, что вы пытаетесь создать какой-то глобальный метод для получения queryParams, если таковой имеется. Вы можете вызывать метод на каждом маршрутизаторе, измененном следующим образом -
this.router.events.subscribe(route => {
this.activatedRoute.queryParams.subscribe((queryParams) => {
solutionId = queryParams.solutionId || null;
});
});
О, конечно, я забываю о новой поддержке агрегирования в Django и annotate
функциональность.
, Таким образом, запрос может быть похожим на это:
Contest.objects.get(pk=id).image_set.annotate(score=Sum('vote__value')).order_by( 'score' )
Можно записать собственный вид в Python очень просто.
def getScore( anObject ):
return anObject.score()
objects= list(Contest.objects.get( pk = id ).image_set)
objects.sort( key=getScore )
Это работает приятно, потому что мы отсортировали список, который мы собираемся предоставить шаблону.
Уровень дб order_by
не может отсортировать queryset по методу Python модели.
решение состоит в том, чтобы представить score
поле Image
модель и повторно вычислить его на каждый Vote
обновление. Своего рода денормализация. Когда Вы желание можете к виду им.