Django:“类型'QuerySet'的对象不是JSON可序列化的”

时间:2018-06-01 08:10:18

标签: python django django-models

我有以下数据要传递给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']

1 个答案:

答案 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)