Django: «Объект типа QuerySet не поддерживает сериализацию в формате JSON» - PullRequest
0 голосов
/ 01 июня 2018

У меня есть следующие данные, которые я хочу передать в 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 голосов
/ 01 июня 2018

This:

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)
...