Django中的订单过滤查询集计数

创造

我正在尝试创建一种排名:有“学生”并且有商品交易。如果该商品是啤酒,则计入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到dict用法。

有一个简单的解决方案吗?我在想类似的东西Transactions.objects.filter(item.beer=True),然后使用此过滤列表来计算可能带有注释的对象?

吹牛

由于beer_listdict的每个值都是一个dict,并且您要按dictbeer_listbeer_count键对项进行排序,因此应使key函数返回beer_count每个子dictkey

beer_list = sorted(beer_list.items(), key=lambda x: x[1]['beer_count'])

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章