#django #annotations
#django #аннотации
Вопрос:
Две модели, статья и обзор, отношение один ко многим (в одной статье много обзоров). В некоторых статьях нет обзора.
Я хочу упорядочивать статьи по рейтингам рецензирования, поэтому я использую аннотацию с помощью AVG:
ArticleQueryset.annotate(rating=models.Avg('reviews__rating')).order_by('-rating')
Проблема в том, что в статьях без обзоров значение рейтинга равно False и каким-то образом оно предшествует максимальному рейтингу. В результате первые результаты не имеют никакого рейтинга, затем отображаются статьи с самым высоким рейтингом.
Ответ №1:
Используйте метод nulls_last=True
в order_by()
качестве
ArticleQueryset.annotate(
rating=models.Avg('reviews__rating')
).order_by(models.F('rating').desc(nulls_last=True))
Комментарии:
1. Я получаю ошибку: у объекта набора запросов нет атрибута ‘desc’
2.
desc
если дляF()
выражения. Возможно, у вас опечатка