我有以下数据要传递给JsonResponse。
coin_amount = [Portfolio.objects.filter(user = request.user, coin = key['coin']).values('amount') for key in coin_sell_options]
print(list(coin_amount))
然而,这会返回ValuesQuerySet,这不是Json可序列化的:
[<QuerySet [{'amount': Decimal('3.0000000')}]>, <QuerySet [{'amount':
Decimal('0.1000000')}]>, <QuerySet [{'amount': Decimal('9.0000000')}]>]
这是有问题的,因为我需要一个JSON可序列化的列表。
所以我需要以某种方式从我的ValuesQuerySet中获取这样的列表:
['3.0000000', '0.1000000', '9.0000000']
答案 0 :(得分:1)
此:
coin_amount = [Portfolio.objects.filter(user=request.user, coin=key['coin']).values('amount') for key in coin_sell_options]
不“返回ValuesQuerySet”,它返回list
ValuesQuerySet
。你想要的是__in
查找运算符:
coins = [key['coin'] for key in coin_sell_options]
coin_amount = list(Portfolio.objects.filter(user=request.user, coin__in=coins).values_list('amount', flat=True))
coin_amount = [str(x) for x in coin_amount]
print(coin_amount)