Я пытаюсь создать некий рейтинг: есть «студенты» и есть транзакции предметов. И если предмет является пивом, он засчитывается в beer_list
.
Я написал это вручную, но это не отсортировано:
beer_list = {}
for transaction in Transactions.objects.all():
if transaction.item.beer:
if transaction.student.student_ID in beer_list:
beer_list[transaction.student.student_ID]['beer_count'] += transaction.item_count
else:
beer_list[transaction.student.student_ID] = {
'nickname': (transaction.student.nickname if transaction.student.nickname else 'Anon'),
'beer_count': transaction.item_count
}
Я попытался отсортировать его с beer_list = sorted(beer_list.items(), key=lambda x: x[1])
но это выдает ошибку, что это сравнение нельзя использовать с помощью dict to dict использование.
Есть ли простое решение для этого? Я думаю о чем-то вроде Transactions.objects.filter(item.beer=True)
и затем использую этот отфильтрованный список для подсчета объектов, возможно, с аннотацией?