Как сортировать с помощью поля внешнего ключа в django и избежать множественных результатов одной и той же строки
Я хочу сортировать группы по их булевому полю 'is_favorite' из модели GroupUser. У меня есть две модели GroupUser, где есть внешний ключ к модели Group, теперь, когда я делаю запрос Group.objects.filter(is_active=True).order_by('groupuser__group_id__is_favorite')
.
я получаю группы несколько раз. Я пробовал использовать distict()
в конечном наборе запросов, но все равно не получилось. Пожалуйста, предложите какой-нибудь другой способ или возможное решение. TIA.
Мы можем использовать аннотацию для подсчета количества любимых вещей у каждой группы. Затем мы можем использовать эту аннотацию для упорядочивания по
from django.db.models import Sum
Group.objects.filter(
is_active=True
).annotate(
total_favorites=Sum('groupuser_group_id__is_favorite')
).order_by(
'-total_favorites'
)